{
 "cells": [
  {
   "cell_type": "code",
   "execution_count": 1,
   "id": "c3087360",
   "metadata": {},
   "outputs": [],
   "source": [
    "import torch\n",
    "import torch.nn as nn\n",
    "import numpy as np\n",
    "import matplotlib.pyplot as plt\n",
    "import scipy.io\n",
    "# Define the coRNNCell\n",
    "class coRNNCell(nn.Module):\n",
    "    def __init__(self, n_inp, n_hid, dt, gamma, epsilon):\n",
    "        super(coRNNCell, self).__init__()\n",
    "        self.dt = dt\n",
    "        self.gamma = gamma\n",
    "        self.epsilon = epsilon\n",
    "        self.i2h = nn.Linear(n_inp + n_hid + n_hid, n_hid)\n",
    "\n",
    "    def forward(self, x, hy, hz):\n",
    "        hz = hz + self.dt * (torch.tanh(self.i2h(torch.cat((x, hz, hy), 1)))\n",
    "                             - self.gamma * hy - self.epsilon * hz)\n",
    "        hy = hy + self.dt * hz\n",
    "\n",
    "        return hy, hz\n",
    "\n",
    "# Define the coRNN model\n",
    "class coRNN(nn.Module):\n",
    "    def __init__(self, n_inp, n_hid, n_out, dt, gamma, epsilon):\n",
    "        super(coRNN, self).__init__()\n",
    "        self.n_hid = n_hid\n",
    "        self.cell = coRNNCell(n_inp, n_hid, dt, gamma, epsilon)\n",
    "        self.readout = nn.Linear(n_hid, n_out)\n",
    "\n",
    "    def forward(self, x):\n",
    "        hy = torch.zeros(x.size(1), self.n_hid)\n",
    "        hz = torch.zeros(x.size(1), self.n_hid)\n",
    "\n",
    "        for t in range(x.size(0)):\n",
    "            hy, hz = self.cell(x[t], hy, hz)\n",
    "        output = self.readout(hy)\n",
    "\n",
    "        return output\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "id": "5d6cfa8b",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "(1, 256)\n",
      "(1, 100)\n",
      "(256, 100)\n"
     ]
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 1080x360 with 2 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "#PINN solution\n",
    "\n",
    "# Load the .mat file\n",
    "mat_data = scipy.io.loadmat('burg.mat')\n",
    "\n",
    "# Access the variables stored in the .mat file\n",
    "# The variable names in the .mat file become keys in the loaded dictionary\n",
    "x = mat_data['x']\n",
    "t = mat_data['t']\n",
    "u = mat_data['u1']\n",
    "\n",
    "# Use the loaded variables as needed\n",
    "print(x.shape)\n",
    "print(t.shape)\n",
    "print(u.shape)\n",
    "\n",
    "X, T = np.meshgrid(x, t)\n",
    "# Define custom color levels\n",
    "c_levels = np.linspace(np.min(u), np.max(u), 100)\n",
    "\n",
    "# Plot the contour\n",
    "plt.figure(figsize=(15, 5))\n",
    "plt.contourf(T, X, u.T, levels=c_levels, cmap='coolwarm')\n",
    "plt.xlabel('t')\n",
    "plt.ylabel('x')\n",
    "plt.title('Burgers')\n",
    "plt.colorbar()  # Add a colorbar for the contour levels\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "0082d614",
   "metadata": {},
   "source": [
    "### Exact solution"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "id": "10519e4e",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "x size (256, 1)\n",
      "t size (100, 1)\n",
      "u size (256, 100)\n"
     ]
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 1080x360 with 2 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "# importing data\n",
    "\n",
    "import torch\n",
    "import torch.nn as nn\n",
    "import numpy as np\n",
    "import time\n",
    "import scipy.io\n",
    "\n",
    "# Load the .mat file\n",
    "mat_data = scipy.io.loadmat('burgers_shock.mat')\n",
    "\n",
    "# Access the variables stored in the .mat file\n",
    "# The variable names in the .mat file become keys in the loaded dictionary\n",
    "x = mat_data['x']\n",
    "t = mat_data['t']\n",
    "u_1 = mat_data['usol']\n",
    "\n",
    "#Use the loaded variables as needed\n",
    "print(\"x size\", x.shape)\n",
    "print(\"t size\", t.shape)\n",
    "print(\"u size\", u.shape)\n",
    "\n",
    "X, T = np.meshgrid(x, t)\n",
    "# Define custom color levels\n",
    "c_levels = np.linspace(np.min(u_1), np.max(u_1), 100)\n",
    "\n",
    "# Plot the contour\n",
    "plt.figure(figsize=(15, 5))\n",
    "plt.contourf(T, X, u_1.T, levels=c_levels, cmap='coolwarm')\n",
    "plt.xlabel('t')\n",
    "plt.ylabel('x')\n",
    "plt.title('Burgers')\n",
    "plt.colorbar()  # Add a colorbar for the contour levels\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "id": "08861d5f",
   "metadata": {},
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "/data/localhome/tkapoor/.local/lib/python3.8/site-packages/torch/nn/modules/loss.py:520: UserWarning: Using a target size (torch.Size([1, 79, 256])) that is different to the input size (torch.Size([79, 256])). This will likely lead to incorrect results due to broadcasting. Please ensure they have the same size.\n",
      "  return F.mse_loss(input, target, reduction=self.reduction)\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Epoch: 10/20000, Loss: 0.41685393\n",
      "Epoch: 20/20000, Loss: 0.40157637\n",
      "Epoch: 30/20000, Loss: 0.38687059\n",
      "Epoch: 40/20000, Loss: 0.37270209\n",
      "Epoch: 50/20000, Loss: 0.35906750\n",
      "Epoch: 60/20000, Loss: 0.34595200\n",
      "Epoch: 70/20000, Loss: 0.33333120\n",
      "Epoch: 80/20000, Loss: 0.32117948\n",
      "Epoch: 90/20000, Loss: 0.30947345\n",
      "Epoch: 100/20000, Loss: 0.29819226\n",
      "Epoch: 110/20000, Loss: 0.28731743\n",
      "Epoch: 120/20000, Loss: 0.27683240\n",
      "Epoch: 130/20000, Loss: 0.26672217\n",
      "Epoch: 140/20000, Loss: 0.25697288\n",
      "Epoch: 150/20000, Loss: 0.24757172\n",
      "Epoch: 160/20000, Loss: 0.23850667\n",
      "Epoch: 170/20000, Loss: 0.22976637\n",
      "Epoch: 180/20000, Loss: 0.22133999\n",
      "Epoch: 190/20000, Loss: 0.21321721\n",
      "Epoch: 200/20000, Loss: 0.20538823\n",
      "Epoch: 210/20000, Loss: 0.19784352\n",
      "Epoch: 220/20000, Loss: 0.19057399\n",
      "Epoch: 230/20000, Loss: 0.18357085\n",
      "Epoch: 240/20000, Loss: 0.17682560\n",
      "Epoch: 250/20000, Loss: 0.17033006\n",
      "Epoch: 260/20000, Loss: 0.16407622\n",
      "Epoch: 270/20000, Loss: 0.15805647\n",
      "Epoch: 280/20000, Loss: 0.15226330\n",
      "Epoch: 290/20000, Loss: 0.14668950\n",
      "Epoch: 300/20000, Loss: 0.14132802\n",
      "Epoch: 310/20000, Loss: 0.13617207\n",
      "Epoch: 320/20000, Loss: 0.13121498\n",
      "Epoch: 330/20000, Loss: 0.12645033\n",
      "Epoch: 340/20000, Loss: 0.12187184\n",
      "Epoch: 350/20000, Loss: 0.11747342\n",
      "Epoch: 360/20000, Loss: 0.11324914\n",
      "Epoch: 370/20000, Loss: 0.10919321\n",
      "Epoch: 380/20000, Loss: 0.10530001\n",
      "Epoch: 390/20000, Loss: 0.10156410\n",
      "Epoch: 400/20000, Loss: 0.09798016\n",
      "Epoch: 410/20000, Loss: 0.09454297\n",
      "Epoch: 420/20000, Loss: 0.09124754\n",
      "Epoch: 430/20000, Loss: 0.08808894\n",
      "Epoch: 440/20000, Loss: 0.08506240\n",
      "Epoch: 450/20000, Loss: 0.08216329\n",
      "Epoch: 460/20000, Loss: 0.07938711\n",
      "Epoch: 470/20000, Loss: 0.07672943\n",
      "Epoch: 480/20000, Loss: 0.07418603\n",
      "Epoch: 490/20000, Loss: 0.07175272\n",
      "Epoch: 500/20000, Loss: 0.06942551\n",
      "Epoch: 510/20000, Loss: 0.06720047\n",
      "Epoch: 520/20000, Loss: 0.06507380\n",
      "Epoch: 530/20000, Loss: 0.06304180\n",
      "Epoch: 540/20000, Loss: 0.06110089\n",
      "Epoch: 550/20000, Loss: 0.05924761\n",
      "Epoch: 560/20000, Loss: 0.05747857\n",
      "Epoch: 570/20000, Loss: 0.05579050\n",
      "Epoch: 580/20000, Loss: 0.05418023\n",
      "Epoch: 590/20000, Loss: 0.05264470\n",
      "Epoch: 600/20000, Loss: 0.05118092\n",
      "Epoch: 610/20000, Loss: 0.04978601\n",
      "Epoch: 620/20000, Loss: 0.04845720\n",
      "Epoch: 630/20000, Loss: 0.04719177\n",
      "Epoch: 640/20000, Loss: 0.04598711\n",
      "Epoch: 650/20000, Loss: 0.04484071\n",
      "Epoch: 660/20000, Loss: 0.04375011\n",
      "Epoch: 670/20000, Loss: 0.04271298\n",
      "Epoch: 680/20000, Loss: 0.04172701\n",
      "Epoch: 690/20000, Loss: 0.04079003\n",
      "Epoch: 700/20000, Loss: 0.03989991\n",
      "Epoch: 710/20000, Loss: 0.03905460\n",
      "Epoch: 720/20000, Loss: 0.03825213\n",
      "Epoch: 730/20000, Loss: 0.03749060\n",
      "Epoch: 740/20000, Loss: 0.03676818\n",
      "Epoch: 750/20000, Loss: 0.03608310\n",
      "Epoch: 760/20000, Loss: 0.03543367\n",
      "Epoch: 770/20000, Loss: 0.03481826\n",
      "Epoch: 780/20000, Loss: 0.03423528\n",
      "Epoch: 790/20000, Loss: 0.03368324\n",
      "Epoch: 800/20000, Loss: 0.03316068\n",
      "Epoch: 810/20000, Loss: 0.03266621\n",
      "Epoch: 820/20000, Loss: 0.03219848\n",
      "Epoch: 830/20000, Loss: 0.03175622\n",
      "Epoch: 840/20000, Loss: 0.03133819\n",
      "Epoch: 850/20000, Loss: 0.03094320\n",
      "Epoch: 860/20000, Loss: 0.03057013\n",
      "Epoch: 870/20000, Loss: 0.03021789\n",
      "Epoch: 880/20000, Loss: 0.02988544\n",
      "Epoch: 890/20000, Loss: 0.02957179\n",
      "Epoch: 900/20000, Loss: 0.02927598\n",
      "Epoch: 910/20000, Loss: 0.02899711\n",
      "Epoch: 920/20000, Loss: 0.02873429\n",
      "Epoch: 930/20000, Loss: 0.02848671\n",
      "Epoch: 940/20000, Loss: 0.02825357\n",
      "Epoch: 950/20000, Loss: 0.02803410\n",
      "Epoch: 960/20000, Loss: 0.02782759\n",
      "Epoch: 970/20000, Loss: 0.02763335\n",
      "Epoch: 980/20000, Loss: 0.02745071\n",
      "Epoch: 990/20000, Loss: 0.02727904\n",
      "Epoch: 1000/20000, Loss: 0.02711776\n",
      "Epoch: 1010/20000, Loss: 0.02696628\n",
      "Epoch: 1020/20000, Loss: 0.02682408\n",
      "Epoch: 1030/20000, Loss: 0.02669063\n",
      "Epoch: 1040/20000, Loss: 0.02656545\n",
      "Epoch: 1050/20000, Loss: 0.02644805\n",
      "Epoch: 1060/20000, Loss: 0.02633802\n",
      "Epoch: 1070/20000, Loss: 0.02623492\n",
      "Epoch: 1080/20000, Loss: 0.02613835\n",
      "Epoch: 1090/20000, Loss: 0.02604794\n",
      "Epoch: 1100/20000, Loss: 0.02596333\n",
      "Epoch: 1110/20000, Loss: 0.02588417\n",
      "Epoch: 1120/20000, Loss: 0.02581015\n",
      "Epoch: 1130/20000, Loss: 0.02574095\n",
      "Epoch: 1140/20000, Loss: 0.02567629\n",
      "Epoch: 1150/20000, Loss: 0.02561590\n",
      "Epoch: 1160/20000, Loss: 0.02555950\n",
      "Epoch: 1170/20000, Loss: 0.02550687\n",
      "Epoch: 1180/20000, Loss: 0.02545776\n",
      "Epoch: 1190/20000, Loss: 0.02541196\n",
      "Epoch: 1200/20000, Loss: 0.02536925\n",
      "Epoch: 1210/20000, Loss: 0.02532946\n",
      "Epoch: 1220/20000, Loss: 0.02529238\n",
      "Epoch: 1230/20000, Loss: 0.02525783\n",
      "Epoch: 1240/20000, Loss: 0.02522566\n",
      "Epoch: 1250/20000, Loss: 0.02519571\n",
      "Epoch: 1260/20000, Loss: 0.02516782\n",
      "Epoch: 1270/20000, Loss: 0.02514184\n",
      "Epoch: 1280/20000, Loss: 0.02511762\n",
      "Epoch: 1290/20000, Loss: 0.02509501\n",
      "Epoch: 1300/20000, Loss: 0.02507380\n",
      "Epoch: 1310/20000, Loss: 0.02505359\n",
      "Epoch: 1320/20000, Loss: 0.02503214\n",
      "Epoch: 1330/20000, Loss: 0.02491937\n",
      "Epoch: 1340/20000, Loss: 0.02468975\n",
      "Epoch: 1350/20000, Loss: 0.02429332\n",
      "Epoch: 1360/20000, Loss: 0.02396245\n",
      "Epoch: 1370/20000, Loss: 0.02369624\n",
      "Epoch: 1380/20000, Loss: 0.02346035\n",
      "Epoch: 1390/20000, Loss: 0.02323751\n",
      "Epoch: 1400/20000, Loss: 0.02301017\n",
      "Epoch: 1410/20000, Loss: 0.02278839\n",
      "Epoch: 1420/20000, Loss: 0.02255920\n",
      "Epoch: 1430/20000, Loss: 0.02232300\n",
      "Epoch: 1440/20000, Loss: 0.02210242\n",
      "Epoch: 1450/20000, Loss: 0.02189947\n",
      "Epoch: 1460/20000, Loss: 0.02170986\n",
      "Epoch: 1470/20000, Loss: 0.02152992\n",
      "Epoch: 1480/20000, Loss: 0.02135732\n",
      "Epoch: 1490/20000, Loss: 0.02119054\n",
      "Epoch: 1500/20000, Loss: 0.02102854\n",
      "Epoch: 1510/20000, Loss: 0.02087054\n",
      "Epoch: 1520/20000, Loss: 0.02071595\n",
      "Epoch: 1530/20000, Loss: 0.02056430\n",
      "Epoch: 1540/20000, Loss: 0.02041518\n",
      "Epoch: 1550/20000, Loss: 0.02026823\n",
      "Epoch: 1560/20000, Loss: 0.02012318\n",
      "Epoch: 1570/20000, Loss: 0.01997975\n",
      "Epoch: 1580/20000, Loss: 0.01983773\n",
      "Epoch: 1590/20000, Loss: 0.01969694\n",
      "Epoch: 1600/20000, Loss: 0.01955723\n",
      "Epoch: 1610/20000, Loss: 0.01941848\n",
      "Epoch: 1620/20000, Loss: 0.01928059\n",
      "Epoch: 1630/20000, Loss: 0.01914349\n",
      "Epoch: 1640/20000, Loss: 0.01900711\n",
      "Epoch: 1650/20000, Loss: 0.01887140\n",
      "Epoch: 1660/20000, Loss: 0.01873634\n",
      "Epoch: 1670/20000, Loss: 0.01860191\n",
      "Epoch: 1680/20000, Loss: 0.01846808\n",
      "Epoch: 1690/20000, Loss: 0.01833485\n",
      "Epoch: 1700/20000, Loss: 0.01820220\n",
      "Epoch: 1710/20000, Loss: 0.01807013\n",
      "Epoch: 1720/20000, Loss: 0.01793867\n",
      "Epoch: 1730/20000, Loss: 0.01780779\n",
      "Epoch: 1740/20000, Loss: 0.01767754\n",
      "Epoch: 1750/20000, Loss: 0.01754791\n",
      "Epoch: 1760/20000, Loss: 0.01741893\n",
      "Epoch: 1770/20000, Loss: 0.01729061\n",
      "Epoch: 1780/20000, Loss: 0.01716296\n",
      "Epoch: 1790/20000, Loss: 0.01703600\n",
      "Epoch: 1800/20000, Loss: 0.01690974\n",
      "Epoch: 1810/20000, Loss: 0.01678419\n",
      "Epoch: 1820/20000, Loss: 0.01665935\n",
      "Epoch: 1830/20000, Loss: 0.01653524\n",
      "Epoch: 1840/20000, Loss: 0.01641187\n",
      "Epoch: 1850/20000, Loss: 0.01628923\n",
      "Epoch: 1860/20000, Loss: 0.01616734\n",
      "Epoch: 1870/20000, Loss: 0.01604620\n",
      "Epoch: 1880/20000, Loss: 0.01592582\n",
      "Epoch: 1890/20000, Loss: 0.01580621\n",
      "Epoch: 1900/20000, Loss: 0.01568739\n",
      "Epoch: 1910/20000, Loss: 0.01556935\n",
      "Epoch: 1920/20000, Loss: 0.01545210\n",
      "Epoch: 1930/20000, Loss: 0.01533567\n",
      "Epoch: 1940/20000, Loss: 0.01522003\n",
      "Epoch: 1950/20000, Loss: 0.01510521\n",
      "Epoch: 1960/20000, Loss: 0.01499121\n",
      "Epoch: 1970/20000, Loss: 0.01487802\n",
      "Epoch: 1980/20000, Loss: 0.01476566\n",
      "Epoch: 1990/20000, Loss: 0.01465411\n",
      "Epoch: 2000/20000, Loss: 0.01454337\n",
      "Epoch: 2010/20000, Loss: 0.01443344\n",
      "Epoch: 2020/20000, Loss: 0.01432432\n",
      "Epoch: 2030/20000, Loss: 0.01421599\n",
      "Epoch: 2040/20000, Loss: 0.01410847\n",
      "Epoch: 2050/20000, Loss: 0.01400173\n",
      "Epoch: 2060/20000, Loss: 0.01389577\n",
      "Epoch: 2070/20000, Loss: 0.01379059\n",
      "Epoch: 2080/20000, Loss: 0.01368619\n",
      "Epoch: 2090/20000, Loss: 0.01358256\n",
      "Epoch: 2100/20000, Loss: 0.01347970\n",
      "Epoch: 2110/20000, Loss: 0.01337762\n",
      "Epoch: 2120/20000, Loss: 0.01327630\n",
      "Epoch: 2130/20000, Loss: 0.01317576\n",
      "Epoch: 2140/20000, Loss: 0.01307599\n",
      "Epoch: 2150/20000, Loss: 0.01297699\n",
      "Epoch: 2160/20000, Loss: 0.01287876\n",
      "Epoch: 2170/20000, Loss: 0.01278131\n",
      "Epoch: 2180/20000, Loss: 0.01268464\n",
      "Epoch: 2190/20000, Loss: 0.01258874\n",
      "Epoch: 2200/20000, Loss: 0.01249363\n",
      "Epoch: 2210/20000, Loss: 0.01239928\n",
      "Epoch: 2220/20000, Loss: 0.01230571\n",
      "Epoch: 2230/20000, Loss: 0.01221291\n",
      "Epoch: 2240/20000, Loss: 0.01212087\n",
      "Epoch: 2250/20000, Loss: 0.01202960\n",
      "Epoch: 2260/20000, Loss: 0.01193909\n",
      "Epoch: 2270/20000, Loss: 0.01184934\n",
      "Epoch: 2280/20000, Loss: 0.01176033\n",
      "Epoch: 2290/20000, Loss: 0.01167207\n",
      "Epoch: 2300/20000, Loss: 0.01158456\n",
      "Epoch: 2310/20000, Loss: 0.01149777\n",
      "Epoch: 2320/20000, Loss: 0.01141172\n",
      "Epoch: 2330/20000, Loss: 0.01132639\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Epoch: 2340/20000, Loss: 0.01124177\n",
      "Epoch: 2350/20000, Loss: 0.01115786\n",
      "Epoch: 2360/20000, Loss: 0.01107466\n",
      "Epoch: 2370/20000, Loss: 0.01099216\n",
      "Epoch: 2380/20000, Loss: 0.01091034\n",
      "Epoch: 2390/20000, Loss: 0.01082921\n",
      "Epoch: 2400/20000, Loss: 0.01074875\n",
      "Epoch: 2410/20000, Loss: 0.01066897\n",
      "Epoch: 2420/20000, Loss: 0.01058984\n",
      "Epoch: 2430/20000, Loss: 0.01051136\n",
      "Epoch: 2440/20000, Loss: 0.01043352\n",
      "Epoch: 2450/20000, Loss: 0.01035631\n",
      "Epoch: 2460/20000, Loss: 0.01027969\n",
      "Epoch: 2470/20000, Loss: 0.01020364\n",
      "Epoch: 2480/20000, Loss: 0.01012791\n",
      "Epoch: 2490/20000, Loss: 0.01002155\n",
      "Epoch: 2500/20000, Loss: 0.00980889\n",
      "Epoch: 2510/20000, Loss: 0.00969999\n",
      "Epoch: 2520/20000, Loss: 0.00960709\n",
      "Epoch: 2530/20000, Loss: 0.00951768\n",
      "Epoch: 2540/20000, Loss: 0.00935060\n",
      "Epoch: 2550/20000, Loss: 0.00918079\n",
      "Epoch: 2560/20000, Loss: 0.00906890\n",
      "Epoch: 2570/20000, Loss: 0.00896663\n",
      "Epoch: 2580/20000, Loss: 0.00886819\n",
      "Epoch: 2590/20000, Loss: 0.00877194\n",
      "Epoch: 2600/20000, Loss: 0.00867750\n",
      "Epoch: 2610/20000, Loss: 0.00858469\n",
      "Epoch: 2620/20000, Loss: 0.00849341\n",
      "Epoch: 2630/20000, Loss: 0.00840355\n",
      "Epoch: 2640/20000, Loss: 0.00831460\n",
      "Epoch: 2650/20000, Loss: 0.00814700\n",
      "Epoch: 2660/20000, Loss: 0.00800072\n",
      "Epoch: 2670/20000, Loss: 0.00789336\n",
      "Epoch: 2680/20000, Loss: 0.00779427\n",
      "Epoch: 2690/20000, Loss: 0.00769763\n",
      "Epoch: 2700/20000, Loss: 0.00760270\n",
      "Epoch: 2710/20000, Loss: 0.00750932\n",
      "Epoch: 2720/20000, Loss: 0.00741740\n",
      "Epoch: 2730/20000, Loss: 0.00732692\n",
      "Epoch: 2740/20000, Loss: 0.00723787\n",
      "Epoch: 2750/20000, Loss: 0.00715027\n",
      "Epoch: 2760/20000, Loss: 0.00706409\n",
      "Epoch: 2770/20000, Loss: 0.00697927\n",
      "Epoch: 2780/20000, Loss: 0.00689384\n",
      "Epoch: 2790/20000, Loss: 0.00672811\n",
      "Epoch: 2800/20000, Loss: 0.00661003\n",
      "Epoch: 2810/20000, Loss: 0.00651586\n",
      "Epoch: 2820/20000, Loss: 0.00638959\n",
      "Epoch: 2830/20000, Loss: 0.00625624\n",
      "Epoch: 2840/20000, Loss: 0.00615392\n",
      "Epoch: 2850/20000, Loss: 0.00605782\n",
      "Epoch: 2860/20000, Loss: 0.00596461\n",
      "Epoch: 2870/20000, Loss: 0.00587385\n",
      "Epoch: 2880/20000, Loss: 0.00578543\n",
      "Epoch: 2890/20000, Loss: 0.00569742\n",
      "Epoch: 2900/20000, Loss: 0.00557741\n",
      "Epoch: 2910/20000, Loss: 0.00547631\n",
      "Epoch: 2920/20000, Loss: 0.00538604\n",
      "Epoch: 2930/20000, Loss: 0.00529805\n",
      "Epoch: 2940/20000, Loss: 0.00521194\n",
      "Epoch: 2950/20000, Loss: 0.00512754\n",
      "Epoch: 2960/20000, Loss: 0.00504462\n",
      "Epoch: 2970/20000, Loss: 0.00496308\n",
      "Epoch: 2980/20000, Loss: 0.00488278\n",
      "Epoch: 2990/20000, Loss: 0.00480317\n",
      "Epoch: 3000/20000, Loss: 0.00470726\n",
      "Epoch: 3010/20000, Loss: 0.00460895\n",
      "Epoch: 3020/20000, Loss: 0.00452325\n",
      "Epoch: 3030/20000, Loss: 0.00443276\n",
      "Epoch: 3040/20000, Loss: 0.00434571\n",
      "Epoch: 3050/20000, Loss: 0.00426273\n",
      "Epoch: 3060/20000, Loss: 0.00418158\n",
      "Epoch: 3070/20000, Loss: 0.00410212\n",
      "Epoch: 3080/20000, Loss: 0.00402438\n",
      "Epoch: 3090/20000, Loss: 0.00394842\n",
      "Epoch: 3100/20000, Loss: 0.00387429\n",
      "Epoch: 3110/20000, Loss: 0.00380202\n",
      "Epoch: 3120/20000, Loss: 0.00373162\n",
      "Epoch: 3130/20000, Loss: 0.00366311\n",
      "Epoch: 3140/20000, Loss: 0.00359647\n",
      "Epoch: 3150/20000, Loss: 0.00353167\n",
      "Epoch: 3160/20000, Loss: 0.00346870\n",
      "Epoch: 3170/20000, Loss: 0.00340751\n",
      "Epoch: 3180/20000, Loss: 0.00334805\n",
      "Epoch: 3190/20000, Loss: 0.00329026\n",
      "Epoch: 3200/20000, Loss: 0.00323410\n",
      "Epoch: 3210/20000, Loss: 0.00317949\n",
      "Epoch: 3220/20000, Loss: 0.00312638\n",
      "Epoch: 3230/20000, Loss: 0.00307471\n",
      "Epoch: 3240/20000, Loss: 0.00302441\n",
      "Epoch: 3250/20000, Loss: 0.00297543\n",
      "Epoch: 3260/20000, Loss: 0.00292770\n",
      "Epoch: 3270/20000, Loss: 0.00288118\n",
      "Epoch: 3280/20000, Loss: 0.00283581\n",
      "Epoch: 3290/20000, Loss: 0.00279155\n",
      "Epoch: 3300/20000, Loss: 0.00274836\n",
      "Epoch: 3310/20000, Loss: 0.00270620\n",
      "Epoch: 3320/20000, Loss: 0.00266504\n",
      "Epoch: 3330/20000, Loss: 0.00262485\n",
      "Epoch: 3340/20000, Loss: 0.00258559\n",
      "Epoch: 3350/20000, Loss: 0.00254724\n",
      "Epoch: 3360/20000, Loss: 0.00250977\n",
      "Epoch: 3370/20000, Loss: 0.00247316\n",
      "Epoch: 3380/20000, Loss: 0.00243737\n",
      "Epoch: 3390/20000, Loss: 0.00240238\n",
      "Epoch: 3400/20000, Loss: 0.00236816\n",
      "Epoch: 3410/20000, Loss: 0.00233469\n",
      "Epoch: 3420/20000, Loss: 0.00230193\n",
      "Epoch: 3430/20000, Loss: 0.00226987\n",
      "Epoch: 3440/20000, Loss: 0.00223847\n",
      "Epoch: 3450/20000, Loss: 0.00220771\n",
      "Epoch: 3460/20000, Loss: 0.00217757\n",
      "Epoch: 3470/20000, Loss: 0.00214802\n",
      "Epoch: 3480/20000, Loss: 0.00211905\n",
      "Epoch: 3490/20000, Loss: 0.00209063\n",
      "Epoch: 3500/20000, Loss: 0.00206275\n",
      "Epoch: 3510/20000, Loss: 0.00203539\n",
      "Epoch: 3520/20000, Loss: 0.00200855\n",
      "Epoch: 3530/20000, Loss: 0.00198221\n",
      "Epoch: 3540/20000, Loss: 0.00195637\n",
      "Epoch: 3550/20000, Loss: 0.00193102\n",
      "Epoch: 3560/20000, Loss: 0.00190614\n",
      "Epoch: 3570/20000, Loss: 0.00188174\n",
      "Epoch: 3580/20000, Loss: 0.00185779\n",
      "Epoch: 3590/20000, Loss: 0.00183431\n",
      "Epoch: 3600/20000, Loss: 0.00181127\n",
      "Epoch: 3610/20000, Loss: 0.00178867\n",
      "Epoch: 3620/20000, Loss: 0.00176649\n",
      "Epoch: 3630/20000, Loss: 0.00174474\n",
      "Epoch: 3640/20000, Loss: 0.00172340\n",
      "Epoch: 3650/20000, Loss: 0.00170246\n",
      "Epoch: 3660/20000, Loss: 0.00168191\n",
      "Epoch: 3670/20000, Loss: 0.00166174\n",
      "Epoch: 3680/20000, Loss: 0.00164195\n",
      "Epoch: 3690/20000, Loss: 0.00162252\n",
      "Epoch: 3700/20000, Loss: 0.00160345\n",
      "Epoch: 3710/20000, Loss: 0.00158473\n",
      "Epoch: 3720/20000, Loss: 0.00156634\n",
      "Epoch: 3730/20000, Loss: 0.00154828\n",
      "Epoch: 3740/20000, Loss: 0.00153055\n",
      "Epoch: 3750/20000, Loss: 0.00151313\n",
      "Epoch: 3760/20000, Loss: 0.00149602\n",
      "Epoch: 3770/20000, Loss: 0.00147920\n",
      "Epoch: 3780/20000, Loss: 0.00146268\n",
      "Epoch: 3790/20000, Loss: 0.00144644\n",
      "Epoch: 3800/20000, Loss: 0.00143047\n",
      "Epoch: 3810/20000, Loss: 0.00141478\n",
      "Epoch: 3820/20000, Loss: 0.00139935\n",
      "Epoch: 3830/20000, Loss: 0.00138418\n",
      "Epoch: 3840/20000, Loss: 0.00136926\n",
      "Epoch: 3850/20000, Loss: 0.00135459\n",
      "Epoch: 3860/20000, Loss: 0.00134015\n",
      "Epoch: 3870/20000, Loss: 0.00132595\n",
      "Epoch: 3880/20000, Loss: 0.00131198\n",
      "Epoch: 3890/20000, Loss: 0.00129823\n",
      "Epoch: 3900/20000, Loss: 0.00128469\n",
      "Epoch: 3910/20000, Loss: 0.00127137\n",
      "Epoch: 3920/20000, Loss: 0.00125826\n",
      "Epoch: 3930/20000, Loss: 0.00124535\n",
      "Epoch: 3940/20000, Loss: 0.00123264\n",
      "Epoch: 3950/20000, Loss: 0.00122012\n",
      "Epoch: 3960/20000, Loss: 0.00120779\n",
      "Epoch: 3970/20000, Loss: 0.00119564\n",
      "Epoch: 3980/20000, Loss: 0.00118368\n",
      "Epoch: 3990/20000, Loss: 0.00117189\n",
      "Epoch: 4000/20000, Loss: 0.00116028\n",
      "Epoch: 4010/20000, Loss: 0.00114883\n",
      "Epoch: 4020/20000, Loss: 0.00113756\n",
      "Epoch: 4030/20000, Loss: 0.00112644\n",
      "Epoch: 4040/20000, Loss: 0.00111548\n",
      "Epoch: 4050/20000, Loss: 0.00110467\n",
      "Epoch: 4060/20000, Loss: 0.00109402\n",
      "Epoch: 4070/20000, Loss: 0.00108351\n",
      "Epoch: 4080/20000, Loss: 0.00107315\n",
      "Epoch: 4090/20000, Loss: 0.00106294\n",
      "Epoch: 4100/20000, Loss: 0.00105286\n",
      "Epoch: 4110/20000, Loss: 0.00104291\n",
      "Epoch: 4120/20000, Loss: 0.00103310\n",
      "Epoch: 4130/20000, Loss: 0.00102342\n",
      "Epoch: 4140/20000, Loss: 0.00101387\n",
      "Epoch: 4150/20000, Loss: 0.00100444\n",
      "Epoch: 4160/20000, Loss: 0.00099513\n",
      "Epoch: 4170/20000, Loss: 0.00098595\n",
      "Epoch: 4180/20000, Loss: 0.00097688\n",
      "Epoch: 4190/20000, Loss: 0.00096792\n",
      "Epoch: 4200/20000, Loss: 0.00095908\n",
      "Epoch: 4210/20000, Loss: 0.00095035\n",
      "Epoch: 4220/20000, Loss: 0.00094173\n",
      "Epoch: 4230/20000, Loss: 0.00093321\n",
      "Epoch: 4240/20000, Loss: 0.00092480\n",
      "Epoch: 4250/20000, Loss: 0.00091649\n",
      "Epoch: 4260/20000, Loss: 0.00090827\n",
      "Epoch: 4270/20000, Loss: 0.00090016\n",
      "Epoch: 4280/20000, Loss: 0.00089214\n",
      "Epoch: 4290/20000, Loss: 0.00088421\n",
      "Epoch: 4300/20000, Loss: 0.00087638\n",
      "Epoch: 4310/20000, Loss: 0.00086864\n",
      "Epoch: 4320/20000, Loss: 0.00086098\n",
      "Epoch: 4330/20000, Loss: 0.00085342\n",
      "Epoch: 4340/20000, Loss: 0.00084593\n",
      "Epoch: 4350/20000, Loss: 0.00083854\n",
      "Epoch: 4360/20000, Loss: 0.00083122\n",
      "Epoch: 4370/20000, Loss: 0.00082398\n",
      "Epoch: 4380/20000, Loss: 0.00081682\n",
      "Epoch: 4390/20000, Loss: 0.00080974\n",
      "Epoch: 4400/20000, Loss: 0.00080274\n",
      "Epoch: 4410/20000, Loss: 0.00079581\n",
      "Epoch: 4420/20000, Loss: 0.00078895\n",
      "Epoch: 4430/20000, Loss: 0.00078217\n",
      "Epoch: 4440/20000, Loss: 0.00077545\n",
      "Epoch: 4450/20000, Loss: 0.00076881\n",
      "Epoch: 4460/20000, Loss: 0.00076223\n",
      "Epoch: 4470/20000, Loss: 0.00075572\n",
      "Epoch: 4480/20000, Loss: 0.00074928\n",
      "Epoch: 4490/20000, Loss: 0.00074290\n",
      "Epoch: 4500/20000, Loss: 0.00073658\n",
      "Epoch: 4510/20000, Loss: 0.00073033\n",
      "Epoch: 4520/20000, Loss: 0.00072414\n",
      "Epoch: 4530/20000, Loss: 0.00071800\n",
      "Epoch: 4540/20000, Loss: 0.00071193\n",
      "Epoch: 4550/20000, Loss: 0.00070592\n",
      "Epoch: 4560/20000, Loss: 0.00069996\n",
      "Epoch: 4570/20000, Loss: 0.00069406\n",
      "Epoch: 4580/20000, Loss: 0.00068821\n",
      "Epoch: 4590/20000, Loss: 0.00068242\n",
      "Epoch: 4600/20000, Loss: 0.00067669\n",
      "Epoch: 4610/20000, Loss: 0.00067100\n",
      "Epoch: 4620/20000, Loss: 0.00066537\n",
      "Epoch: 4630/20000, Loss: 0.00065979\n",
      "Epoch: 4640/20000, Loss: 0.00065426\n",
      "Epoch: 4650/20000, Loss: 0.00064878\n",
      "Epoch: 4660/20000, Loss: 0.00064335\n",
      "Epoch: 4670/20000, Loss: 0.00063797\n",
      "Epoch: 4680/20000, Loss: 0.00063264\n",
      "Epoch: 4690/20000, Loss: 0.00062735\n",
      "Epoch: 4700/20000, Loss: 0.00062211\n",
      "Epoch: 4710/20000, Loss: 0.00061691\n",
      "Epoch: 4720/20000, Loss: 0.00061176\n",
      "Epoch: 4730/20000, Loss: 0.00060666\n",
      "Epoch: 4740/20000, Loss: 0.00060160\n",
      "Epoch: 4750/20000, Loss: 0.00059658\n",
      "Epoch: 4760/20000, Loss: 0.00059160\n",
      "Epoch: 4770/20000, Loss: 0.00058667\n",
      "Epoch: 4780/20000, Loss: 0.00058178\n",
      "Epoch: 4790/20000, Loss: 0.00057693\n",
      "Epoch: 4800/20000, Loss: 0.00057212\n",
      "Epoch: 4810/20000, Loss: 0.00056735\n",
      "Epoch: 4820/20000, Loss: 0.00056262\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Epoch: 4830/20000, Loss: 0.00055793\n",
      "Epoch: 4840/20000, Loss: 0.00055327\n",
      "Epoch: 4850/20000, Loss: 0.00054866\n",
      "Epoch: 4860/20000, Loss: 0.00054408\n",
      "Epoch: 4870/20000, Loss: 0.00053954\n",
      "Epoch: 4880/20000, Loss: 0.00053504\n",
      "Epoch: 4890/20000, Loss: 0.00053057\n",
      "Epoch: 4900/20000, Loss: 0.00052614\n",
      "Epoch: 4910/20000, Loss: 0.00052175\n",
      "Epoch: 4920/20000, Loss: 0.00051739\n",
      "Epoch: 4930/20000, Loss: 0.00051306\n",
      "Epoch: 4940/20000, Loss: 0.00050877\n",
      "Epoch: 4950/20000, Loss: 0.00050452\n",
      "Epoch: 4960/20000, Loss: 0.00050030\n",
      "Epoch: 4970/20000, Loss: 0.00049611\n",
      "Epoch: 4980/20000, Loss: 0.00049195\n",
      "Epoch: 4990/20000, Loss: 0.00048783\n",
      "Epoch: 5000/20000, Loss: 0.00048374\n",
      "Epoch: 5010/20000, Loss: 0.00047968\n",
      "Epoch: 5020/20000, Loss: 0.00047565\n",
      "Epoch: 5030/20000, Loss: 0.00047165\n",
      "Epoch: 5040/20000, Loss: 0.00046769\n",
      "Epoch: 5050/20000, Loss: 0.00046375\n",
      "Epoch: 5060/20000, Loss: 0.00045985\n",
      "Epoch: 5070/20000, Loss: 0.00045598\n",
      "Epoch: 5080/20000, Loss: 0.00045213\n",
      "Epoch: 5090/20000, Loss: 0.00044832\n",
      "Epoch: 5100/20000, Loss: 0.00044453\n",
      "Epoch: 5110/20000, Loss: 0.00044078\n",
      "Epoch: 5120/20000, Loss: 0.00043705\n",
      "Epoch: 5130/20000, Loss: 0.00043335\n",
      "Epoch: 5140/20000, Loss: 0.00042968\n",
      "Epoch: 5150/20000, Loss: 0.00042604\n",
      "Epoch: 5160/20000, Loss: 0.00042243\n",
      "Epoch: 5170/20000, Loss: 0.00041884\n",
      "Epoch: 5180/20000, Loss: 0.00041528\n",
      "Epoch: 5190/20000, Loss: 0.00041175\n",
      "Epoch: 5200/20000, Loss: 0.00040825\n",
      "Epoch: 5210/20000, Loss: 0.00040477\n",
      "Epoch: 5220/20000, Loss: 0.00040132\n",
      "Epoch: 5230/20000, Loss: 0.00039789\n",
      "Epoch: 5240/20000, Loss: 0.00039449\n",
      "Epoch: 5250/20000, Loss: 0.00039112\n",
      "Epoch: 5260/20000, Loss: 0.00038777\n",
      "Epoch: 5270/20000, Loss: 0.00038445\n",
      "Epoch: 5280/20000, Loss: 0.00038115\n",
      "Epoch: 5290/20000, Loss: 0.00037788\n",
      "Epoch: 5300/20000, Loss: 0.00037464\n",
      "Epoch: 5310/20000, Loss: 0.00037141\n",
      "Epoch: 5320/20000, Loss: 0.00036822\n",
      "Epoch: 5330/20000, Loss: 0.00036504\n",
      "Epoch: 5340/20000, Loss: 0.00036189\n",
      "Epoch: 5350/20000, Loss: 0.00035877\n",
      "Epoch: 5360/20000, Loss: 0.00035567\n",
      "Epoch: 5370/20000, Loss: 0.00035259\n",
      "Epoch: 5380/20000, Loss: 0.00034954\n",
      "Epoch: 5390/20000, Loss: 0.00034650\n",
      "Epoch: 5400/20000, Loss: 0.00034350\n",
      "Epoch: 5410/20000, Loss: 0.00034051\n",
      "Epoch: 5420/20000, Loss: 0.00033755\n",
      "Epoch: 5430/20000, Loss: 0.00033461\n",
      "Epoch: 5440/20000, Loss: 0.00033170\n",
      "Epoch: 5450/20000, Loss: 0.00032880\n",
      "Epoch: 5460/20000, Loss: 0.00032593\n",
      "Epoch: 5470/20000, Loss: 0.00032308\n",
      "Epoch: 5480/20000, Loss: 0.00032025\n",
      "Epoch: 5490/20000, Loss: 0.00031745\n",
      "Epoch: 5500/20000, Loss: 0.00031466\n",
      "Epoch: 5510/20000, Loss: 0.00031190\n",
      "Epoch: 5520/20000, Loss: 0.00030916\n",
      "Epoch: 5530/20000, Loss: 0.00030644\n",
      "Epoch: 5540/20000, Loss: 0.00030374\n",
      "Epoch: 5550/20000, Loss: 0.00030106\n",
      "Epoch: 5560/20000, Loss: 0.00029840\n",
      "Epoch: 5570/20000, Loss: 0.00029577\n",
      "Epoch: 5580/20000, Loss: 0.00029315\n",
      "Epoch: 5590/20000, Loss: 0.00029056\n",
      "Epoch: 5600/20000, Loss: 0.00028798\n",
      "Epoch: 5610/20000, Loss: 0.00028543\n",
      "Epoch: 5620/20000, Loss: 0.00028289\n",
      "Epoch: 5630/20000, Loss: 0.00028037\n",
      "Epoch: 5640/20000, Loss: 0.00027788\n",
      "Epoch: 5650/20000, Loss: 0.00027540\n",
      "Epoch: 5660/20000, Loss: 0.00027295\n",
      "Epoch: 5670/20000, Loss: 0.00027051\n",
      "Epoch: 5680/20000, Loss: 0.00026809\n",
      "Epoch: 5690/20000, Loss: 0.00026569\n",
      "Epoch: 5700/20000, Loss: 0.00026331\n",
      "Epoch: 5710/20000, Loss: 0.00026095\n",
      "Epoch: 5720/20000, Loss: 0.00025861\n",
      "Epoch: 5730/20000, Loss: 0.00025629\n",
      "Epoch: 5740/20000, Loss: 0.00025399\n",
      "Epoch: 5750/20000, Loss: 0.00025170\n",
      "Epoch: 5760/20000, Loss: 0.00024943\n",
      "Epoch: 5770/20000, Loss: 0.00024718\n",
      "Epoch: 5780/20000, Loss: 0.00024495\n",
      "Epoch: 5790/20000, Loss: 0.00024274\n",
      "Epoch: 5800/20000, Loss: 0.00024054\n",
      "Epoch: 5810/20000, Loss: 0.00023836\n",
      "Epoch: 5820/20000, Loss: 0.00023620\n",
      "Epoch: 5830/20000, Loss: 0.00023406\n",
      "Epoch: 5840/20000, Loss: 0.00023193\n",
      "Epoch: 5850/20000, Loss: 0.00022982\n",
      "Epoch: 5860/20000, Loss: 0.00022773\n",
      "Epoch: 5870/20000, Loss: 0.00022566\n",
      "Epoch: 5880/20000, Loss: 0.00022360\n",
      "Epoch: 5890/20000, Loss: 0.00022156\n",
      "Epoch: 5900/20000, Loss: 0.00021954\n",
      "Epoch: 5910/20000, Loss: 0.00021753\n",
      "Epoch: 5920/20000, Loss: 0.00021554\n",
      "Epoch: 5930/20000, Loss: 0.00021356\n",
      "Epoch: 5940/20000, Loss: 0.00021160\n",
      "Epoch: 5950/20000, Loss: 0.00020966\n",
      "Epoch: 5960/20000, Loss: 0.00020773\n",
      "Epoch: 5970/20000, Loss: 0.00020582\n",
      "Epoch: 5980/20000, Loss: 0.00020393\n",
      "Epoch: 5990/20000, Loss: 0.00020205\n",
      "Epoch: 6000/20000, Loss: 0.00020018\n",
      "Epoch: 6010/20000, Loss: 0.00019833\n",
      "Epoch: 6020/20000, Loss: 0.00019650\n",
      "Epoch: 6030/20000, Loss: 0.00019468\n",
      "Epoch: 6040/20000, Loss: 0.00019287\n",
      "Epoch: 6050/20000, Loss: 0.00019108\n",
      "Epoch: 6060/20000, Loss: 0.00018930\n",
      "Epoch: 6070/20000, Loss: 0.00018754\n",
      "Epoch: 6080/20000, Loss: 0.00018579\n",
      "Epoch: 6090/20000, Loss: 0.00018406\n",
      "Epoch: 6100/20000, Loss: 0.00018234\n",
      "Epoch: 6110/20000, Loss: 0.00018064\n",
      "Epoch: 6120/20000, Loss: 0.00017894\n",
      "Epoch: 6130/20000, Loss: 0.00017727\n",
      "Epoch: 6140/20000, Loss: 0.00017560\n",
      "Epoch: 6150/20000, Loss: 0.00017398\n",
      "Epoch: 6160/20000, Loss: 0.00017233\n",
      "Epoch: 6170/20000, Loss: 0.00017069\n",
      "Epoch: 6180/20000, Loss: 0.00016909\n",
      "Epoch: 6190/20000, Loss: 0.00016749\n",
      "Epoch: 6200/20000, Loss: 0.00016591\n",
      "Epoch: 6210/20000, Loss: 0.00016434\n",
      "Epoch: 6220/20000, Loss: 0.00016278\n",
      "Epoch: 6230/20000, Loss: 0.00016124\n",
      "Epoch: 6240/20000, Loss: 0.00015971\n",
      "Epoch: 6250/20000, Loss: 0.00015820\n",
      "Epoch: 6260/20000, Loss: 0.00015669\n",
      "Epoch: 6270/20000, Loss: 0.00015520\n",
      "Epoch: 6280/20000, Loss: 0.00015372\n",
      "Epoch: 6290/20000, Loss: 0.00015226\n",
      "Epoch: 6300/20000, Loss: 0.00015080\n",
      "Epoch: 6310/20000, Loss: 0.00014936\n",
      "Epoch: 6320/20000, Loss: 0.00014793\n",
      "Epoch: 6330/20000, Loss: 0.00014653\n",
      "Epoch: 6340/20000, Loss: 0.00014512\n",
      "Epoch: 6350/20000, Loss: 0.00014372\n",
      "Epoch: 6360/20000, Loss: 0.00014235\n",
      "Epoch: 6370/20000, Loss: 0.00014098\n",
      "Epoch: 6380/20000, Loss: 0.00013963\n",
      "Epoch: 6390/20000, Loss: 0.00013828\n",
      "Epoch: 6400/20000, Loss: 0.00013695\n",
      "Epoch: 6410/20000, Loss: 0.00013563\n",
      "Epoch: 6420/20000, Loss: 0.00013433\n",
      "Epoch: 6430/20000, Loss: 0.00013303\n",
      "Epoch: 6440/20000, Loss: 0.00013174\n",
      "Epoch: 6450/20000, Loss: 0.00013047\n",
      "Epoch: 6460/20000, Loss: 0.00012921\n",
      "Epoch: 6470/20000, Loss: 0.00012796\n",
      "Epoch: 6480/20000, Loss: 0.00012672\n",
      "Epoch: 6490/20000, Loss: 0.00012549\n",
      "Epoch: 6500/20000, Loss: 0.00012427\n",
      "Epoch: 6510/20000, Loss: 0.00012307\n",
      "Epoch: 6520/20000, Loss: 0.00012190\n",
      "Epoch: 6530/20000, Loss: 0.00012070\n",
      "Epoch: 6540/20000, Loss: 0.00011951\n",
      "Epoch: 6550/20000, Loss: 0.00011835\n",
      "Epoch: 6560/20000, Loss: 0.00011720\n",
      "Epoch: 6570/20000, Loss: 0.00011606\n",
      "Epoch: 6580/20000, Loss: 0.00011493\n",
      "Epoch: 6590/20000, Loss: 0.00011380\n",
      "Epoch: 6600/20000, Loss: 0.00011269\n",
      "Epoch: 6610/20000, Loss: 0.00011159\n",
      "Epoch: 6620/20000, Loss: 0.00011050\n",
      "Epoch: 6630/20000, Loss: 0.00010942\n",
      "Epoch: 6640/20000, Loss: 0.00010835\n",
      "Epoch: 6650/20000, Loss: 0.00010729\n",
      "Epoch: 6660/20000, Loss: 0.00010624\n",
      "Epoch: 6670/20000, Loss: 0.00010520\n",
      "Epoch: 6680/20000, Loss: 0.00010417\n",
      "Epoch: 6690/20000, Loss: 0.00010314\n",
      "Epoch: 6700/20000, Loss: 0.00010213\n",
      "Epoch: 6710/20000, Loss: 0.00010113\n",
      "Epoch: 6720/20000, Loss: 0.00010013\n",
      "Epoch: 6730/20000, Loss: 0.00009918\n",
      "Epoch: 6740/20000, Loss: 0.00009819\n",
      "Epoch: 6750/20000, Loss: 0.00009721\n",
      "Epoch: 6760/20000, Loss: 0.00009625\n",
      "Epoch: 6770/20000, Loss: 0.00009530\n",
      "Epoch: 6780/20000, Loss: 0.00009436\n",
      "Epoch: 6790/20000, Loss: 0.00009343\n",
      "Epoch: 6800/20000, Loss: 0.00009251\n",
      "Epoch: 6810/20000, Loss: 0.00009160\n",
      "Epoch: 6820/20000, Loss: 0.00009070\n",
      "Epoch: 6830/20000, Loss: 0.00008980\n",
      "Epoch: 6840/20000, Loss: 0.00008892\n",
      "Epoch: 6850/20000, Loss: 0.00008804\n",
      "Epoch: 6860/20000, Loss: 0.00008717\n",
      "Epoch: 6870/20000, Loss: 0.00008631\n",
      "Epoch: 6880/20000, Loss: 0.00008545\n",
      "Epoch: 6890/20000, Loss: 0.00008461\n",
      "Epoch: 6900/20000, Loss: 0.00008377\n",
      "Epoch: 6910/20000, Loss: 0.00008295\n",
      "Epoch: 6920/20000, Loss: 0.00008213\n",
      "Epoch: 6930/20000, Loss: 0.00008131\n",
      "Epoch: 6940/20000, Loss: 0.00008050\n",
      "Epoch: 6950/20000, Loss: 0.00007970\n",
      "Epoch: 6960/20000, Loss: 0.00007891\n",
      "Epoch: 6970/20000, Loss: 0.00007813\n",
      "Epoch: 6980/20000, Loss: 0.00007736\n",
      "Epoch: 6990/20000, Loss: 0.00007659\n",
      "Epoch: 7000/20000, Loss: 0.00007583\n",
      "Epoch: 7010/20000, Loss: 0.00007508\n",
      "Epoch: 7020/20000, Loss: 0.00007433\n",
      "Epoch: 7030/20000, Loss: 0.00007360\n",
      "Epoch: 7040/20000, Loss: 0.00007287\n",
      "Epoch: 7050/20000, Loss: 0.00007214\n",
      "Epoch: 7060/20000, Loss: 0.00007143\n",
      "Epoch: 7070/20000, Loss: 0.00007072\n",
      "Epoch: 7080/20000, Loss: 0.00007002\n",
      "Epoch: 7090/20000, Loss: 0.00006937\n",
      "Epoch: 7100/20000, Loss: 0.00006864\n",
      "Epoch: 7110/20000, Loss: 0.00006795\n",
      "Epoch: 7120/20000, Loss: 0.00006728\n",
      "Epoch: 7130/20000, Loss: 0.00006661\n",
      "Epoch: 7140/20000, Loss: 0.00006594\n",
      "Epoch: 7150/20000, Loss: 0.00006529\n",
      "Epoch: 7160/20000, Loss: 0.00006464\n",
      "Epoch: 7170/20000, Loss: 0.00006400\n",
      "Epoch: 7180/20000, Loss: 0.00006336\n",
      "Epoch: 7190/20000, Loss: 0.00006273\n",
      "Epoch: 7200/20000, Loss: 0.00006211\n",
      "Epoch: 7210/20000, Loss: 0.00006149\n",
      "Epoch: 7220/20000, Loss: 0.00006088\n",
      "Epoch: 7230/20000, Loss: 0.00006027\n",
      "Epoch: 7240/20000, Loss: 0.00005967\n",
      "Epoch: 7250/20000, Loss: 0.00005908\n",
      "Epoch: 7260/20000, Loss: 0.00005849\n",
      "Epoch: 7270/20000, Loss: 0.00005792\n",
      "Epoch: 7280/20000, Loss: 0.00005734\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Epoch: 7290/20000, Loss: 0.00005678\n",
      "Epoch: 7300/20000, Loss: 0.00005620\n",
      "Epoch: 7310/20000, Loss: 0.00005564\n",
      "Epoch: 7320/20000, Loss: 0.00005509\n",
      "Epoch: 7330/20000, Loss: 0.00005454\n",
      "Epoch: 7340/20000, Loss: 0.00005400\n",
      "Epoch: 7350/20000, Loss: 0.00005346\n",
      "Epoch: 7360/20000, Loss: 0.00005293\n",
      "Epoch: 7370/20000, Loss: 0.00005240\n",
      "Epoch: 7380/20000, Loss: 0.00005188\n",
      "Epoch: 7390/20000, Loss: 0.00005136\n",
      "Epoch: 7400/20000, Loss: 0.00005085\n",
      "Epoch: 7410/20000, Loss: 0.00005034\n",
      "Epoch: 7420/20000, Loss: 0.00004984\n",
      "Epoch: 7430/20000, Loss: 0.00004935\n",
      "Epoch: 7440/20000, Loss: 0.00004885\n",
      "Epoch: 7450/20000, Loss: 0.00004837\n",
      "Epoch: 7460/20000, Loss: 0.00004788\n",
      "Epoch: 7470/20000, Loss: 0.00004741\n",
      "Epoch: 7480/20000, Loss: 0.00004693\n",
      "Epoch: 7490/20000, Loss: 0.00004647\n",
      "Epoch: 7500/20000, Loss: 0.00004602\n",
      "Epoch: 7510/20000, Loss: 0.00004555\n",
      "Epoch: 7520/20000, Loss: 0.00004509\n",
      "Epoch: 7530/20000, Loss: 0.00004464\n",
      "Epoch: 7540/20000, Loss: 0.00004419\n",
      "Epoch: 7550/20000, Loss: 0.00004375\n",
      "Epoch: 7560/20000, Loss: 0.00004332\n",
      "Epoch: 7570/20000, Loss: 0.00004288\n",
      "Epoch: 7580/20000, Loss: 0.00004245\n",
      "Epoch: 7590/20000, Loss: 0.00004203\n",
      "Epoch: 7600/20000, Loss: 0.00004161\n",
      "Epoch: 7610/20000, Loss: 0.00004119\n",
      "Epoch: 7620/20000, Loss: 0.00004078\n",
      "Epoch: 7630/20000, Loss: 0.00004037\n",
      "Epoch: 7640/20000, Loss: 0.00003997\n",
      "Epoch: 7650/20000, Loss: 0.00003957\n",
      "Epoch: 7660/20000, Loss: 0.00003917\n",
      "Epoch: 7670/20000, Loss: 0.00003878\n",
      "Epoch: 7680/20000, Loss: 0.00003839\n",
      "Epoch: 7690/20000, Loss: 0.00003801\n",
      "Epoch: 7700/20000, Loss: 0.00003768\n",
      "Epoch: 7710/20000, Loss: 0.00003726\n",
      "Epoch: 7720/20000, Loss: 0.00003687\n",
      "Epoch: 7730/20000, Loss: 0.00003651\n",
      "Epoch: 7740/20000, Loss: 0.00003614\n",
      "Epoch: 7750/20000, Loss: 0.00003577\n",
      "Epoch: 7760/20000, Loss: 0.00003541\n",
      "Epoch: 7770/20000, Loss: 0.00003506\n",
      "Epoch: 7780/20000, Loss: 0.00003471\n",
      "Epoch: 7790/20000, Loss: 0.00003436\n",
      "Epoch: 7800/20000, Loss: 0.00003401\n",
      "Epoch: 7810/20000, Loss: 0.00003367\n",
      "Epoch: 7820/20000, Loss: 0.00003333\n",
      "Epoch: 7830/20000, Loss: 0.00003299\n",
      "Epoch: 7840/20000, Loss: 0.00003266\n",
      "Epoch: 7850/20000, Loss: 0.00003233\n",
      "Epoch: 7860/20000, Loss: 0.00003201\n",
      "Epoch: 7870/20000, Loss: 0.00003168\n",
      "Epoch: 7880/20000, Loss: 0.00003137\n",
      "Epoch: 7890/20000, Loss: 0.00003106\n",
      "Epoch: 7900/20000, Loss: 0.00003073\n",
      "Epoch: 7910/20000, Loss: 0.00003043\n",
      "Epoch: 7920/20000, Loss: 0.00003012\n",
      "Epoch: 7930/20000, Loss: 0.00002981\n",
      "Epoch: 7940/20000, Loss: 0.00002951\n",
      "Epoch: 7950/20000, Loss: 0.00002921\n",
      "Epoch: 7960/20000, Loss: 0.00002892\n",
      "Epoch: 7970/20000, Loss: 0.00002862\n",
      "Epoch: 7980/20000, Loss: 0.00002833\n",
      "Epoch: 7990/20000, Loss: 0.00002805\n",
      "Epoch: 8000/20000, Loss: 0.00002776\n",
      "Epoch: 8010/20000, Loss: 0.00002748\n",
      "Epoch: 8020/20000, Loss: 0.00002720\n",
      "Epoch: 8030/20000, Loss: 0.00002693\n",
      "Epoch: 8040/20000, Loss: 0.00002665\n",
      "Epoch: 8050/20000, Loss: 0.00002639\n",
      "Epoch: 8060/20000, Loss: 0.00002616\n",
      "Epoch: 8070/20000, Loss: 0.00002588\n",
      "Epoch: 8080/20000, Loss: 0.00002559\n",
      "Epoch: 8090/20000, Loss: 0.00002533\n",
      "Epoch: 8100/20000, Loss: 0.00002507\n",
      "Epoch: 8110/20000, Loss: 0.00002482\n",
      "Epoch: 8120/20000, Loss: 0.00002457\n",
      "Epoch: 8130/20000, Loss: 0.00002432\n",
      "Epoch: 8140/20000, Loss: 0.00002407\n",
      "Epoch: 8150/20000, Loss: 0.00002383\n",
      "Epoch: 8160/20000, Loss: 0.00002358\n",
      "Epoch: 8170/20000, Loss: 0.00002334\n",
      "Epoch: 8180/20000, Loss: 0.00002311\n",
      "Epoch: 8190/20000, Loss: 0.00002287\n",
      "Epoch: 8200/20000, Loss: 0.00002264\n",
      "Epoch: 8210/20000, Loss: 0.00002241\n",
      "Epoch: 8220/20000, Loss: 0.00002218\n",
      "Epoch: 8230/20000, Loss: 0.00002195\n",
      "Epoch: 8240/20000, Loss: 0.00002173\n",
      "Epoch: 8250/20000, Loss: 0.00002151\n",
      "Epoch: 8260/20000, Loss: 0.00002129\n",
      "Epoch: 8270/20000, Loss: 0.00002112\n",
      "Epoch: 8280/20000, Loss: 0.00002089\n",
      "Epoch: 8290/20000, Loss: 0.00002064\n",
      "Epoch: 8300/20000, Loss: 0.00002044\n",
      "Epoch: 8310/20000, Loss: 0.00002022\n",
      "Epoch: 8320/20000, Loss: 0.00002002\n",
      "Epoch: 8330/20000, Loss: 0.00001981\n",
      "Epoch: 8340/20000, Loss: 0.00001961\n",
      "Epoch: 8350/20000, Loss: 0.00001941\n",
      "Epoch: 8360/20000, Loss: 0.00001921\n",
      "Epoch: 8370/20000, Loss: 0.00001902\n",
      "Epoch: 8380/20000, Loss: 0.00001882\n",
      "Epoch: 8390/20000, Loss: 0.00001863\n",
      "Epoch: 8400/20000, Loss: 0.00001844\n",
      "Epoch: 8410/20000, Loss: 0.00001825\n",
      "Epoch: 8420/20000, Loss: 0.00001806\n",
      "Epoch: 8430/20000, Loss: 0.00001788\n",
      "Epoch: 8440/20000, Loss: 0.00001770\n",
      "Epoch: 8450/20000, Loss: 0.00001752\n",
      "Epoch: 8460/20000, Loss: 0.00001734\n",
      "Epoch: 8470/20000, Loss: 0.00001720\n",
      "Epoch: 8480/20000, Loss: 0.00001701\n",
      "Epoch: 8490/20000, Loss: 0.00001681\n",
      "Epoch: 8500/20000, Loss: 0.00001664\n",
      "Epoch: 8510/20000, Loss: 0.00001647\n",
      "Epoch: 8520/20000, Loss: 0.00001630\n",
      "Epoch: 8530/20000, Loss: 0.00001613\n",
      "Epoch: 8540/20000, Loss: 0.00001597\n",
      "Epoch: 8550/20000, Loss: 0.00001580\n",
      "Epoch: 8560/20000, Loss: 0.00001564\n",
      "Epoch: 8570/20000, Loss: 0.00001548\n",
      "Epoch: 8580/20000, Loss: 0.00001532\n",
      "Epoch: 8590/20000, Loss: 0.00001516\n",
      "Epoch: 8600/20000, Loss: 0.00001501\n",
      "Epoch: 8610/20000, Loss: 0.00001485\n",
      "Epoch: 8620/20000, Loss: 0.00001470\n",
      "Epoch: 8630/20000, Loss: 0.00001455\n",
      "Epoch: 8640/20000, Loss: 0.00001440\n",
      "Epoch: 8650/20000, Loss: 0.00001425\n",
      "Epoch: 8660/20000, Loss: 0.00001412\n",
      "Epoch: 8670/20000, Loss: 0.00001397\n",
      "Epoch: 8680/20000, Loss: 0.00001384\n",
      "Epoch: 8690/20000, Loss: 0.00001368\n",
      "Epoch: 8700/20000, Loss: 0.00001354\n",
      "Epoch: 8710/20000, Loss: 0.00001340\n",
      "Epoch: 8720/20000, Loss: 0.00001326\n",
      "Epoch: 8730/20000, Loss: 0.00001313\n",
      "Epoch: 8740/20000, Loss: 0.00001299\n",
      "Epoch: 8750/20000, Loss: 0.00001286\n",
      "Epoch: 8760/20000, Loss: 0.00001273\n",
      "Epoch: 8770/20000, Loss: 0.00001260\n",
      "Epoch: 8780/20000, Loss: 0.00001247\n",
      "Epoch: 8790/20000, Loss: 0.00001234\n",
      "Epoch: 8800/20000, Loss: 0.00001221\n",
      "Epoch: 8810/20000, Loss: 0.00001209\n",
      "Epoch: 8820/20000, Loss: 0.00001196\n",
      "Epoch: 8830/20000, Loss: 0.00001184\n",
      "Epoch: 8840/20000, Loss: 0.00001172\n",
      "Epoch: 8850/20000, Loss: 0.00001160\n",
      "Epoch: 8860/20000, Loss: 0.00001148\n",
      "Epoch: 8870/20000, Loss: 0.00001142\n",
      "Epoch: 8880/20000, Loss: 0.00001124\n",
      "Epoch: 8890/20000, Loss: 0.00001113\n",
      "Epoch: 8900/20000, Loss: 0.00001101\n",
      "Epoch: 8910/20000, Loss: 0.00001090\n",
      "Epoch: 8920/20000, Loss: 0.00001079\n",
      "Epoch: 8930/20000, Loss: 0.00001068\n",
      "Epoch: 8940/20000, Loss: 0.00001057\n",
      "Epoch: 8950/20000, Loss: 0.00001046\n",
      "Epoch: 8960/20000, Loss: 0.00001035\n",
      "Epoch: 8970/20000, Loss: 0.00001025\n",
      "Epoch: 8980/20000, Loss: 0.00001014\n",
      "Epoch: 8990/20000, Loss: 0.00001004\n",
      "Epoch: 9000/20000, Loss: 0.00000993\n",
      "Epoch: 9010/20000, Loss: 0.00000983\n",
      "Epoch: 9020/20000, Loss: 0.00000973\n",
      "Epoch: 9030/20000, Loss: 0.00000963\n",
      "Epoch: 9040/20000, Loss: 0.00000953\n",
      "Epoch: 9050/20000, Loss: 0.00000944\n",
      "Epoch: 9060/20000, Loss: 0.00000941\n",
      "Epoch: 9070/20000, Loss: 0.00000929\n",
      "Epoch: 9080/20000, Loss: 0.00000915\n",
      "Epoch: 9090/20000, Loss: 0.00000906\n",
      "Epoch: 9100/20000, Loss: 0.00000896\n",
      "Epoch: 9110/20000, Loss: 0.00000887\n",
      "Epoch: 9120/20000, Loss: 0.00000878\n",
      "Epoch: 9130/20000, Loss: 0.00000869\n",
      "Epoch: 9140/20000, Loss: 0.00000860\n",
      "Epoch: 9150/20000, Loss: 0.00000851\n",
      "Epoch: 9160/20000, Loss: 0.00000843\n",
      "Epoch: 9170/20000, Loss: 0.00000834\n",
      "Epoch: 9180/20000, Loss: 0.00000826\n",
      "Epoch: 9190/20000, Loss: 0.00000817\n",
      "Epoch: 9200/20000, Loss: 0.00000809\n",
      "Epoch: 9210/20000, Loss: 0.00000800\n",
      "Epoch: 9220/20000, Loss: 0.00000792\n",
      "Epoch: 9230/20000, Loss: 0.00000784\n",
      "Epoch: 9240/20000, Loss: 0.00000776\n",
      "Epoch: 9250/20000, Loss: 0.00000768\n",
      "Epoch: 9260/20000, Loss: 0.00000761\n",
      "Epoch: 9270/20000, Loss: 0.00000754\n",
      "Epoch: 9280/20000, Loss: 0.00000747\n",
      "Epoch: 9290/20000, Loss: 0.00000738\n",
      "Epoch: 9300/20000, Loss: 0.00000730\n",
      "Epoch: 9310/20000, Loss: 0.00000723\n",
      "Epoch: 9320/20000, Loss: 0.00000715\n",
      "Epoch: 9330/20000, Loss: 0.00000708\n",
      "Epoch: 9340/20000, Loss: 0.00000701\n",
      "Epoch: 9350/20000, Loss: 0.00000694\n",
      "Epoch: 9360/20000, Loss: 0.00000686\n",
      "Epoch: 9370/20000, Loss: 0.00000680\n",
      "Epoch: 9380/20000, Loss: 0.00000673\n",
      "Epoch: 9390/20000, Loss: 0.00000671\n",
      "Epoch: 9400/20000, Loss: 0.00000660\n",
      "Epoch: 9410/20000, Loss: 0.00000653\n",
      "Epoch: 9420/20000, Loss: 0.00000646\n",
      "Epoch: 9430/20000, Loss: 0.00000639\n",
      "Epoch: 9440/20000, Loss: 0.00000633\n",
      "Epoch: 9450/20000, Loss: 0.00000626\n",
      "Epoch: 9460/20000, Loss: 0.00000620\n",
      "Epoch: 9470/20000, Loss: 0.00000614\n",
      "Epoch: 9480/20000, Loss: 0.00000607\n",
      "Epoch: 9490/20000, Loss: 0.00000601\n",
      "Epoch: 9500/20000, Loss: 0.00000595\n",
      "Epoch: 9510/20000, Loss: 0.00000589\n",
      "Epoch: 9520/20000, Loss: 0.00000583\n",
      "Epoch: 9530/20000, Loss: 0.00000581\n",
      "Epoch: 9540/20000, Loss: 0.00000572\n",
      "Epoch: 9550/20000, Loss: 0.00000567\n",
      "Epoch: 9560/20000, Loss: 0.00000560\n",
      "Epoch: 9570/20000, Loss: 0.00000555\n",
      "Epoch: 9580/20000, Loss: 0.00000549\n",
      "Epoch: 9590/20000, Loss: 0.00000543\n",
      "Epoch: 9600/20000, Loss: 0.00000538\n",
      "Epoch: 9610/20000, Loss: 0.00000532\n",
      "Epoch: 9620/20000, Loss: 0.00000527\n",
      "Epoch: 9630/20000, Loss: 0.00000522\n",
      "Epoch: 9640/20000, Loss: 0.00000517\n",
      "Epoch: 9650/20000, Loss: 0.00000512\n",
      "Epoch: 9660/20000, Loss: 0.00000506\n",
      "Epoch: 9670/20000, Loss: 0.00000501\n",
      "Epoch: 9680/20000, Loss: 0.00000496\n",
      "Epoch: 9690/20000, Loss: 0.00000491\n",
      "Epoch: 9700/20000, Loss: 0.00000486\n",
      "Epoch: 9710/20000, Loss: 0.00000482\n",
      "Epoch: 9720/20000, Loss: 0.00000479\n",
      "Epoch: 9730/20000, Loss: 0.00000472\n",
      "Epoch: 9740/20000, Loss: 0.00000467\n",
      "Epoch: 9750/20000, Loss: 0.00000463\n",
      "Epoch: 9760/20000, Loss: 0.00000458\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Epoch: 9770/20000, Loss: 0.00000453\n",
      "Epoch: 9780/20000, Loss: 0.00000449\n",
      "Epoch: 9790/20000, Loss: 0.00000444\n",
      "Epoch: 9800/20000, Loss: 0.00000440\n",
      "Epoch: 9810/20000, Loss: 0.00000436\n",
      "Epoch: 9820/20000, Loss: 0.00000431\n",
      "Epoch: 9830/20000, Loss: 0.00000427\n",
      "Epoch: 9840/20000, Loss: 0.00000423\n",
      "Epoch: 9850/20000, Loss: 0.00000419\n",
      "Epoch: 9860/20000, Loss: 0.00000419\n",
      "Epoch: 9870/20000, Loss: 0.00000412\n",
      "Epoch: 9880/20000, Loss: 0.00000407\n",
      "Epoch: 9890/20000, Loss: 0.00000403\n",
      "Epoch: 9900/20000, Loss: 0.00000398\n",
      "Epoch: 9910/20000, Loss: 0.00000394\n",
      "Epoch: 9920/20000, Loss: 0.00000391\n",
      "Epoch: 9930/20000, Loss: 0.00000387\n",
      "Epoch: 9940/20000, Loss: 0.00000384\n",
      "Epoch: 9950/20000, Loss: 0.00000380\n",
      "Epoch: 9960/20000, Loss: 0.00000376\n",
      "Epoch: 9970/20000, Loss: 0.00000372\n",
      "Epoch: 9980/20000, Loss: 0.00000368\n",
      "Epoch: 9990/20000, Loss: 0.00000366\n",
      "Epoch: 10000/20000, Loss: 0.00000361\n",
      "Epoch: 10010/20000, Loss: 0.00000358\n",
      "Epoch: 10020/20000, Loss: 0.00000354\n",
      "Epoch: 10030/20000, Loss: 0.00000351\n",
      "Epoch: 10040/20000, Loss: 0.00000347\n",
      "Epoch: 10050/20000, Loss: 0.00000344\n",
      "Epoch: 10060/20000, Loss: 0.00000340\n",
      "Epoch: 10070/20000, Loss: 0.00000337\n",
      "Epoch: 10080/20000, Loss: 0.00000334\n",
      "Epoch: 10090/20000, Loss: 0.00000332\n",
      "Epoch: 10100/20000, Loss: 0.00000330\n",
      "Epoch: 10110/20000, Loss: 0.00000324\n",
      "Epoch: 10120/20000, Loss: 0.00000321\n",
      "Epoch: 10130/20000, Loss: 0.00000318\n",
      "Epoch: 10140/20000, Loss: 0.00000315\n",
      "Epoch: 10150/20000, Loss: 0.00000312\n",
      "Epoch: 10160/20000, Loss: 0.00000309\n",
      "Epoch: 10170/20000, Loss: 0.00000306\n",
      "Epoch: 10180/20000, Loss: 0.00000303\n",
      "Epoch: 10190/20000, Loss: 0.00000300\n",
      "Epoch: 10200/20000, Loss: 0.00000297\n",
      "Epoch: 10210/20000, Loss: 0.00000294\n",
      "Epoch: 10220/20000, Loss: 0.00000293\n",
      "Epoch: 10230/20000, Loss: 0.00000291\n",
      "Epoch: 10240/20000, Loss: 0.00000287\n",
      "Epoch: 10250/20000, Loss: 0.00000284\n",
      "Epoch: 10260/20000, Loss: 0.00000281\n",
      "Epoch: 10270/20000, Loss: 0.00000278\n",
      "Epoch: 10280/20000, Loss: 0.00000275\n",
      "Epoch: 10290/20000, Loss: 0.00000273\n",
      "Epoch: 10300/20000, Loss: 0.00000270\n",
      "Epoch: 10310/20000, Loss: 0.00000268\n",
      "Epoch: 10320/20000, Loss: 0.00000267\n",
      "Epoch: 10330/20000, Loss: 0.00000263\n",
      "Epoch: 10340/20000, Loss: 0.00000260\n",
      "Epoch: 10350/20000, Loss: 0.00000258\n",
      "Epoch: 10360/20000, Loss: 0.00000255\n",
      "Epoch: 10370/20000, Loss: 0.00000253\n",
      "Epoch: 10380/20000, Loss: 0.00000250\n",
      "Epoch: 10390/20000, Loss: 0.00000248\n",
      "Epoch: 10400/20000, Loss: 0.00000247\n",
      "Epoch: 10410/20000, Loss: 0.00000244\n",
      "Epoch: 10420/20000, Loss: 0.00000241\n",
      "Epoch: 10430/20000, Loss: 0.00000239\n",
      "Epoch: 10440/20000, Loss: 0.00000237\n",
      "Epoch: 10450/20000, Loss: 0.00000236\n",
      "Epoch: 10460/20000, Loss: 0.00000233\n",
      "Epoch: 10470/20000, Loss: 0.00000230\n",
      "Epoch: 10480/20000, Loss: 0.00000228\n",
      "Epoch: 10490/20000, Loss: 0.00000226\n",
      "Epoch: 10500/20000, Loss: 0.00000224\n",
      "Epoch: 10510/20000, Loss: 0.00000222\n",
      "Epoch: 10520/20000, Loss: 0.00000220\n",
      "Epoch: 10530/20000, Loss: 0.00000218\n",
      "Epoch: 10540/20000, Loss: 0.00000221\n",
      "Epoch: 10550/20000, Loss: 0.00000216\n",
      "Epoch: 10560/20000, Loss: 0.00000212\n",
      "Epoch: 10570/20000, Loss: 0.00000210\n",
      "Epoch: 10580/20000, Loss: 0.00000208\n",
      "Epoch: 10590/20000, Loss: 0.00000206\n",
      "Epoch: 10600/20000, Loss: 0.00000204\n",
      "Epoch: 10610/20000, Loss: 0.00000202\n",
      "Epoch: 10620/20000, Loss: 0.00000200\n",
      "Epoch: 10630/20000, Loss: 0.00000199\n",
      "Epoch: 10640/20000, Loss: 0.00000198\n",
      "Epoch: 10650/20000, Loss: 0.00000195\n",
      "Epoch: 10660/20000, Loss: 0.00000193\n",
      "Epoch: 10670/20000, Loss: 0.00000191\n",
      "Epoch: 10680/20000, Loss: 0.00000190\n",
      "Epoch: 10690/20000, Loss: 0.00000189\n",
      "Epoch: 10700/20000, Loss: 0.00000188\n",
      "Epoch: 10710/20000, Loss: 0.00000185\n",
      "Epoch: 10720/20000, Loss: 0.00000183\n",
      "Epoch: 10730/20000, Loss: 0.00000181\n",
      "Epoch: 10740/20000, Loss: 0.00000180\n",
      "Epoch: 10750/20000, Loss: 0.00000178\n",
      "Epoch: 10760/20000, Loss: 0.00000177\n",
      "Epoch: 10770/20000, Loss: 0.00000178\n",
      "Epoch: 10780/20000, Loss: 0.00000174\n",
      "Epoch: 10790/20000, Loss: 0.00000172\n",
      "Epoch: 10800/20000, Loss: 0.00000170\n",
      "Epoch: 10810/20000, Loss: 0.00000169\n",
      "Epoch: 10820/20000, Loss: 0.00000167\n",
      "Epoch: 10830/20000, Loss: 0.00000166\n",
      "Epoch: 10840/20000, Loss: 0.00000164\n",
      "Epoch: 10850/20000, Loss: 0.00000165\n",
      "Epoch: 10860/20000, Loss: 0.00000162\n",
      "Epoch: 10870/20000, Loss: 0.00000160\n",
      "Epoch: 10880/20000, Loss: 0.00000159\n",
      "Epoch: 10890/20000, Loss: 0.00000157\n",
      "Epoch: 10900/20000, Loss: 0.00000157\n",
      "Epoch: 10910/20000, Loss: 0.00000156\n",
      "Epoch: 10920/20000, Loss: 0.00000153\n",
      "Epoch: 10930/20000, Loss: 0.00000152\n",
      "Epoch: 10940/20000, Loss: 0.00000150\n",
      "Epoch: 10950/20000, Loss: 0.00000149\n",
      "Epoch: 10960/20000, Loss: 0.00000149\n",
      "Epoch: 10970/20000, Loss: 0.00000150\n",
      "Epoch: 10980/20000, Loss: 0.00000145\n",
      "Epoch: 10990/20000, Loss: 0.00000144\n",
      "Epoch: 11000/20000, Loss: 0.00000143\n",
      "Epoch: 11010/20000, Loss: 0.00000141\n",
      "Epoch: 11020/20000, Loss: 0.00000140\n",
      "Epoch: 11030/20000, Loss: 0.00000139\n",
      "Epoch: 11040/20000, Loss: 0.00000139\n",
      "Epoch: 11050/20000, Loss: 0.00000142\n",
      "Epoch: 11060/20000, Loss: 0.00000137\n",
      "Epoch: 11070/20000, Loss: 0.00000135\n",
      "Epoch: 11080/20000, Loss: 0.00000133\n",
      "Epoch: 11090/20000, Loss: 0.00000132\n",
      "Epoch: 11100/20000, Loss: 0.00000131\n",
      "Epoch: 11110/20000, Loss: 0.00000130\n",
      "Epoch: 11120/20000, Loss: 0.00000129\n",
      "Epoch: 11130/20000, Loss: 0.00000129\n",
      "Epoch: 11140/20000, Loss: 0.00000129\n",
      "Epoch: 11150/20000, Loss: 0.00000126\n",
      "Epoch: 11160/20000, Loss: 0.00000124\n",
      "Epoch: 11170/20000, Loss: 0.00000123\n",
      "Epoch: 11180/20000, Loss: 0.00000122\n",
      "Epoch: 11190/20000, Loss: 0.00000121\n",
      "Epoch: 11200/20000, Loss: 0.00000120\n",
      "Epoch: 11210/20000, Loss: 0.00000119\n",
      "Epoch: 11220/20000, Loss: 0.00000122\n",
      "Epoch: 11230/20000, Loss: 0.00000124\n",
      "Epoch: 11240/20000, Loss: 0.00000117\n",
      "Epoch: 11250/20000, Loss: 0.00000116\n",
      "Epoch: 11260/20000, Loss: 0.00000115\n",
      "Epoch: 11270/20000, Loss: 0.00000113\n",
      "Epoch: 11280/20000, Loss: 0.00000113\n",
      "Epoch: 11290/20000, Loss: 0.00000112\n",
      "Epoch: 11300/20000, Loss: 0.00000111\n",
      "Epoch: 11310/20000, Loss: 0.00000110\n",
      "Epoch: 11320/20000, Loss: 0.00000109\n",
      "Epoch: 11330/20000, Loss: 0.00000108\n",
      "Epoch: 11340/20000, Loss: 0.00000111\n",
      "Epoch: 11350/20000, Loss: 0.00000106\n",
      "Epoch: 11360/20000, Loss: 0.00000106\n",
      "Epoch: 11370/20000, Loss: 0.00000105\n",
      "Epoch: 11380/20000, Loss: 0.00000104\n",
      "Epoch: 11390/20000, Loss: 0.00000103\n",
      "Epoch: 11400/20000, Loss: 0.00000105\n",
      "Epoch: 11410/20000, Loss: 0.00000102\n",
      "Epoch: 11420/20000, Loss: 0.00000100\n",
      "Epoch: 11430/20000, Loss: 0.00000100\n",
      "Epoch: 11440/20000, Loss: 0.00000099\n",
      "Epoch: 11450/20000, Loss: 0.00000098\n",
      "Epoch: 11460/20000, Loss: 0.00000097\n",
      "Epoch: 11470/20000, Loss: 0.00000096\n",
      "Epoch: 11480/20000, Loss: 0.00000096\n",
      "Epoch: 11490/20000, Loss: 0.00000104\n",
      "Epoch: 11500/20000, Loss: 0.00000097\n",
      "Epoch: 11510/20000, Loss: 0.00000094\n",
      "Epoch: 11520/20000, Loss: 0.00000093\n",
      "Epoch: 11530/20000, Loss: 0.00000092\n",
      "Epoch: 11540/20000, Loss: 0.00000091\n",
      "Epoch: 11550/20000, Loss: 0.00000091\n",
      "Epoch: 11560/20000, Loss: 0.00000090\n",
      "Epoch: 11570/20000, Loss: 0.00000089\n",
      "Epoch: 11580/20000, Loss: 0.00000088\n",
      "Epoch: 11590/20000, Loss: 0.00000088\n",
      "Epoch: 11600/20000, Loss: 0.00000087\n",
      "Epoch: 11610/20000, Loss: 0.00000087\n",
      "Epoch: 11620/20000, Loss: 0.00000088\n",
      "Epoch: 11630/20000, Loss: 0.00000089\n",
      "Epoch: 11640/20000, Loss: 0.00000086\n",
      "Epoch: 11650/20000, Loss: 0.00000085\n",
      "Epoch: 11660/20000, Loss: 0.00000083\n",
      "Epoch: 11670/20000, Loss: 0.00000083\n",
      "Epoch: 11680/20000, Loss: 0.00000082\n",
      "Epoch: 11690/20000, Loss: 0.00000081\n",
      "Epoch: 11700/20000, Loss: 0.00000081\n",
      "Epoch: 11710/20000, Loss: 0.00000080\n",
      "Epoch: 11720/20000, Loss: 0.00000079\n",
      "Epoch: 11730/20000, Loss: 0.00000079\n",
      "Epoch: 11740/20000, Loss: 0.00000078\n",
      "Epoch: 11750/20000, Loss: 0.00000077\n",
      "Epoch: 11760/20000, Loss: 0.00000077\n",
      "Epoch: 11770/20000, Loss: 0.00000078\n",
      "Epoch: 11780/20000, Loss: 0.00000077\n",
      "Epoch: 11790/20000, Loss: 0.00000077\n",
      "Epoch: 11800/20000, Loss: 0.00000075\n",
      "Epoch: 11810/20000, Loss: 0.00000074\n",
      "Epoch: 11820/20000, Loss: 0.00000074\n",
      "Epoch: 11830/20000, Loss: 0.00000073\n",
      "Epoch: 11840/20000, Loss: 0.00000072\n",
      "Epoch: 11850/20000, Loss: 0.00000072\n",
      "Epoch: 11860/20000, Loss: 0.00000073\n",
      "Epoch: 11870/20000, Loss: 0.00000072\n",
      "Epoch: 11880/20000, Loss: 0.00000071\n",
      "Epoch: 11890/20000, Loss: 0.00000070\n",
      "Epoch: 11900/20000, Loss: 0.00000069\n",
      "Epoch: 11910/20000, Loss: 0.00000069\n",
      "Epoch: 11920/20000, Loss: 0.00000069\n",
      "Epoch: 11930/20000, Loss: 0.00000071\n",
      "Epoch: 11940/20000, Loss: 0.00000068\n",
      "Epoch: 11950/20000, Loss: 0.00000067\n",
      "Epoch: 11960/20000, Loss: 0.00000067\n",
      "Epoch: 11970/20000, Loss: 0.00000067\n",
      "Epoch: 11980/20000, Loss: 0.00000065\n",
      "Epoch: 11990/20000, Loss: 0.00000065\n",
      "Epoch: 12000/20000, Loss: 0.00000064\n",
      "Epoch: 12010/20000, Loss: 0.00000064\n",
      "Epoch: 12020/20000, Loss: 0.00000065\n",
      "Epoch: 12030/20000, Loss: 0.00000066\n",
      "Epoch: 12040/20000, Loss: 0.00000064\n",
      "Epoch: 12050/20000, Loss: 0.00000062\n",
      "Epoch: 12060/20000, Loss: 0.00000061\n",
      "Epoch: 12070/20000, Loss: 0.00000061\n",
      "Epoch: 12080/20000, Loss: 0.00000061\n",
      "Epoch: 12090/20000, Loss: 0.00000060\n",
      "Epoch: 12100/20000, Loss: 0.00000061\n",
      "Epoch: 12110/20000, Loss: 0.00000063\n",
      "Epoch: 12120/20000, Loss: 0.00000060\n",
      "Epoch: 12130/20000, Loss: 0.00000059\n",
      "Epoch: 12140/20000, Loss: 0.00000058\n",
      "Epoch: 12150/20000, Loss: 0.00000058\n",
      "Epoch: 12160/20000, Loss: 0.00000057\n",
      "Epoch: 12170/20000, Loss: 0.00000057\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Epoch: 12180/20000, Loss: 0.00000058\n",
      "Epoch: 12190/20000, Loss: 0.00000057\n",
      "Epoch: 12200/20000, Loss: 0.00000056\n",
      "Epoch: 12210/20000, Loss: 0.00000055\n",
      "Epoch: 12220/20000, Loss: 0.00000055\n",
      "Epoch: 12230/20000, Loss: 0.00000054\n",
      "Epoch: 12240/20000, Loss: 0.00000056\n",
      "Epoch: 12250/20000, Loss: 0.00000054\n",
      "Epoch: 12260/20000, Loss: 0.00000054\n",
      "Epoch: 12270/20000, Loss: 0.00000053\n",
      "Epoch: 12280/20000, Loss: 0.00000053\n",
      "Epoch: 12290/20000, Loss: 0.00000053\n",
      "Epoch: 12300/20000, Loss: 0.00000059\n",
      "Epoch: 12310/20000, Loss: 0.00000054\n",
      "Epoch: 12320/20000, Loss: 0.00000052\n",
      "Epoch: 12330/20000, Loss: 0.00000051\n",
      "Epoch: 12340/20000, Loss: 0.00000050\n",
      "Epoch: 12350/20000, Loss: 0.00000050\n",
      "Epoch: 12360/20000, Loss: 0.00000050\n",
      "Epoch: 12370/20000, Loss: 0.00000049\n",
      "Epoch: 12380/20000, Loss: 0.00000049\n",
      "Epoch: 12390/20000, Loss: 0.00000049\n",
      "Epoch: 12400/20000, Loss: 0.00000052\n",
      "Epoch: 12410/20000, Loss: 0.00000050\n",
      "Epoch: 12420/20000, Loss: 0.00000049\n",
      "Epoch: 12430/20000, Loss: 0.00000048\n",
      "Epoch: 12440/20000, Loss: 0.00000047\n",
      "Epoch: 12450/20000, Loss: 0.00000048\n",
      "Epoch: 12460/20000, Loss: 0.00000048\n",
      "Epoch: 12470/20000, Loss: 0.00000047\n",
      "Epoch: 12480/20000, Loss: 0.00000046\n",
      "Epoch: 12490/20000, Loss: 0.00000045\n",
      "Epoch: 12500/20000, Loss: 0.00000045\n",
      "Epoch: 12510/20000, Loss: 0.00000045\n",
      "Epoch: 12520/20000, Loss: 0.00000044\n",
      "Epoch: 12530/20000, Loss: 0.00000044\n",
      "Epoch: 12540/20000, Loss: 0.00000045\n",
      "Epoch: 12550/20000, Loss: 0.00000047\n",
      "Epoch: 12560/20000, Loss: 0.00000045\n",
      "Epoch: 12570/20000, Loss: 0.00000043\n",
      "Epoch: 12580/20000, Loss: 0.00000043\n",
      "Epoch: 12590/20000, Loss: 0.00000043\n",
      "Epoch: 12600/20000, Loss: 0.00000046\n",
      "Epoch: 12610/20000, Loss: 0.00000043\n",
      "Epoch: 12620/20000, Loss: 0.00000042\n",
      "Epoch: 12630/20000, Loss: 0.00000041\n",
      "Epoch: 12640/20000, Loss: 0.00000041\n",
      "Epoch: 12650/20000, Loss: 0.00000043\n",
      "Epoch: 12660/20000, Loss: 0.00000042\n",
      "Epoch: 12670/20000, Loss: 0.00000041\n",
      "Epoch: 12680/20000, Loss: 0.00000040\n",
      "Epoch: 12690/20000, Loss: 0.00000040\n",
      "Epoch: 12700/20000, Loss: 0.00000040\n",
      "Epoch: 12710/20000, Loss: 0.00000041\n",
      "Epoch: 12720/20000, Loss: 0.00000039\n",
      "Epoch: 12730/20000, Loss: 0.00000039\n",
      "Epoch: 12740/20000, Loss: 0.00000039\n",
      "Epoch: 12750/20000, Loss: 0.00000038\n",
      "Epoch: 12760/20000, Loss: 0.00000039\n",
      "Epoch: 12770/20000, Loss: 0.00000040\n",
      "Epoch: 12780/20000, Loss: 0.00000038\n",
      "Epoch: 12790/20000, Loss: 0.00000038\n",
      "Epoch: 12800/20000, Loss: 0.00000037\n",
      "Epoch: 12810/20000, Loss: 0.00000039\n",
      "Epoch: 12820/20000, Loss: 0.00000036\n",
      "Epoch: 12830/20000, Loss: 0.00000036\n",
      "Epoch: 12840/20000, Loss: 0.00000036\n",
      "Epoch: 12850/20000, Loss: 0.00000036\n",
      "Epoch: 12860/20000, Loss: 0.00000036\n",
      "Epoch: 12870/20000, Loss: 0.00000036\n",
      "Epoch: 12880/20000, Loss: 0.00000039\n",
      "Epoch: 12890/20000, Loss: 0.00000037\n",
      "Epoch: 12900/20000, Loss: 0.00000035\n",
      "Epoch: 12910/20000, Loss: 0.00000034\n",
      "Epoch: 12920/20000, Loss: 0.00000034\n",
      "Epoch: 12930/20000, Loss: 0.00000034\n",
      "Epoch: 12940/20000, Loss: 0.00000034\n",
      "Epoch: 12950/20000, Loss: 0.00000033\n",
      "Epoch: 12960/20000, Loss: 0.00000033\n",
      "Epoch: 12970/20000, Loss: 0.00000033\n",
      "Epoch: 12980/20000, Loss: 0.00000037\n",
      "Epoch: 12990/20000, Loss: 0.00000034\n",
      "Epoch: 13000/20000, Loss: 0.00000033\n",
      "Epoch: 13010/20000, Loss: 0.00000033\n",
      "Epoch: 13020/20000, Loss: 0.00000032\n",
      "Epoch: 13030/20000, Loss: 0.00000032\n",
      "Epoch: 13040/20000, Loss: 0.00000032\n",
      "Epoch: 13050/20000, Loss: 0.00000033\n",
      "Epoch: 13060/20000, Loss: 0.00000032\n",
      "Epoch: 13070/20000, Loss: 0.00000032\n",
      "Epoch: 13080/20000, Loss: 0.00000031\n",
      "Epoch: 13090/20000, Loss: 0.00000031\n",
      "Epoch: 13100/20000, Loss: 0.00000030\n",
      "Epoch: 13110/20000, Loss: 0.00000030\n",
      "Epoch: 13120/20000, Loss: 0.00000031\n",
      "Epoch: 13130/20000, Loss: 0.00000041\n",
      "Epoch: 13140/20000, Loss: 0.00000031\n",
      "Epoch: 13150/20000, Loss: 0.00000030\n",
      "Epoch: 13160/20000, Loss: 0.00000030\n",
      "Epoch: 13170/20000, Loss: 0.00000029\n",
      "Epoch: 13180/20000, Loss: 0.00000029\n",
      "Epoch: 13190/20000, Loss: 0.00000029\n",
      "Epoch: 13200/20000, Loss: 0.00000029\n",
      "Epoch: 13210/20000, Loss: 0.00000028\n",
      "Epoch: 13220/20000, Loss: 0.00000029\n",
      "Epoch: 13230/20000, Loss: 0.00000034\n",
      "Epoch: 13240/20000, Loss: 0.00000030\n",
      "Epoch: 13250/20000, Loss: 0.00000028\n",
      "Epoch: 13260/20000, Loss: 0.00000028\n",
      "Epoch: 13270/20000, Loss: 0.00000027\n",
      "Epoch: 13280/20000, Loss: 0.00000027\n",
      "Epoch: 13290/20000, Loss: 0.00000027\n",
      "Epoch: 13300/20000, Loss: 0.00000027\n",
      "Epoch: 13310/20000, Loss: 0.00000027\n",
      "Epoch: 13320/20000, Loss: 0.00000041\n",
      "Epoch: 13330/20000, Loss: 0.00000027\n",
      "Epoch: 13340/20000, Loss: 0.00000028\n",
      "Epoch: 13350/20000, Loss: 0.00000026\n",
      "Epoch: 13360/20000, Loss: 0.00000026\n",
      "Epoch: 13370/20000, Loss: 0.00000026\n",
      "Epoch: 13380/20000, Loss: 0.00000028\n",
      "Epoch: 13390/20000, Loss: 0.00000026\n",
      "Epoch: 13400/20000, Loss: 0.00000025\n",
      "Epoch: 13410/20000, Loss: 0.00000025\n",
      "Epoch: 13420/20000, Loss: 0.00000025\n",
      "Epoch: 13430/20000, Loss: 0.00000025\n",
      "Epoch: 13440/20000, Loss: 0.00000025\n",
      "Epoch: 13450/20000, Loss: 0.00000025\n",
      "Epoch: 13460/20000, Loss: 0.00000024\n",
      "Epoch: 13470/20000, Loss: 0.00000024\n",
      "Epoch: 13480/20000, Loss: 0.00000024\n",
      "Epoch: 13490/20000, Loss: 0.00000029\n",
      "Epoch: 13500/20000, Loss: 0.00000026\n",
      "Epoch: 13510/20000, Loss: 0.00000025\n",
      "Epoch: 13520/20000, Loss: 0.00000024\n",
      "Epoch: 13530/20000, Loss: 0.00000024\n",
      "Epoch: 13540/20000, Loss: 0.00000024\n",
      "Epoch: 13550/20000, Loss: 0.00000025\n",
      "Epoch: 13560/20000, Loss: 0.00000023\n",
      "Epoch: 13570/20000, Loss: 0.00000023\n",
      "Epoch: 13580/20000, Loss: 0.00000023\n",
      "Epoch: 13590/20000, Loss: 0.00000023\n",
      "Epoch: 13600/20000, Loss: 0.00000023\n",
      "Epoch: 13610/20000, Loss: 0.00000027\n",
      "Epoch: 13620/20000, Loss: 0.00000024\n",
      "Epoch: 13630/20000, Loss: 0.00000023\n",
      "Epoch: 13640/20000, Loss: 0.00000022\n",
      "Epoch: 13650/20000, Loss: 0.00000022\n",
      "Epoch: 13660/20000, Loss: 0.00000022\n",
      "Epoch: 13670/20000, Loss: 0.00000022\n",
      "Epoch: 13680/20000, Loss: 0.00000022\n",
      "Epoch: 13690/20000, Loss: 0.00000021\n",
      "Epoch: 13700/20000, Loss: 0.00000021\n",
      "Epoch: 13710/20000, Loss: 0.00000022\n",
      "Epoch: 13720/20000, Loss: 0.00000027\n",
      "Epoch: 13730/20000, Loss: 0.00000024\n",
      "Epoch: 13740/20000, Loss: 0.00000028\n",
      "Epoch: 13750/20000, Loss: 0.00000022\n",
      "Epoch: 13760/20000, Loss: 0.00000021\n",
      "Epoch: 13770/20000, Loss: 0.00000021\n",
      "Epoch: 13780/20000, Loss: 0.00000020\n",
      "Epoch: 13790/20000, Loss: 0.00000020\n",
      "Epoch: 13800/20000, Loss: 0.00000020\n",
      "Epoch: 13810/20000, Loss: 0.00000020\n",
      "Epoch: 13820/20000, Loss: 0.00000020\n",
      "Epoch: 13830/20000, Loss: 0.00000020\n",
      "Epoch: 13840/20000, Loss: 0.00000020\n",
      "Epoch: 13850/20000, Loss: 0.00000020\n",
      "Epoch: 13860/20000, Loss: 0.00000026\n",
      "Epoch: 13870/20000, Loss: 0.00000021\n",
      "Epoch: 13880/20000, Loss: 0.00000021\n",
      "Epoch: 13890/20000, Loss: 0.00000020\n",
      "Epoch: 13900/20000, Loss: 0.00000019\n",
      "Epoch: 13910/20000, Loss: 0.00000019\n",
      "Epoch: 13920/20000, Loss: 0.00000019\n",
      "Epoch: 13930/20000, Loss: 0.00000019\n",
      "Epoch: 13940/20000, Loss: 0.00000019\n",
      "Epoch: 13950/20000, Loss: 0.00000019\n",
      "Epoch: 13960/20000, Loss: 0.00000026\n",
      "Epoch: 13970/20000, Loss: 0.00000020\n",
      "Epoch: 13980/20000, Loss: 0.00000019\n",
      "Epoch: 13990/20000, Loss: 0.00000018\n",
      "Epoch: 14000/20000, Loss: 0.00000018\n",
      "Epoch: 14010/20000, Loss: 0.00000018\n",
      "Epoch: 14020/20000, Loss: 0.00000018\n",
      "Epoch: 14030/20000, Loss: 0.00000021\n",
      "Epoch: 14040/20000, Loss: 0.00000018\n",
      "Epoch: 14050/20000, Loss: 0.00000020\n",
      "Epoch: 14060/20000, Loss: 0.00000017\n",
      "Epoch: 14070/20000, Loss: 0.00000018\n",
      "Epoch: 14080/20000, Loss: 0.00000017\n",
      "Epoch: 14090/20000, Loss: 0.00000017\n",
      "Epoch: 14100/20000, Loss: 0.00000020\n",
      "Epoch: 14110/20000, Loss: 0.00000018\n",
      "Epoch: 14120/20000, Loss: 0.00000017\n",
      "Epoch: 14130/20000, Loss: 0.00000017\n",
      "Epoch: 14140/20000, Loss: 0.00000017\n",
      "Epoch: 14150/20000, Loss: 0.00000017\n",
      "Epoch: 14160/20000, Loss: 0.00000017\n",
      "Epoch: 14170/20000, Loss: 0.00000016\n",
      "Epoch: 14180/20000, Loss: 0.00000016\n",
      "Epoch: 14190/20000, Loss: 0.00000016\n",
      "Epoch: 14200/20000, Loss: 0.00000018\n",
      "Epoch: 14210/20000, Loss: 0.00000024\n",
      "Epoch: 14220/20000, Loss: 0.00000018\n",
      "Epoch: 14230/20000, Loss: 0.00000016\n",
      "Epoch: 14240/20000, Loss: 0.00000016\n",
      "Epoch: 14250/20000, Loss: 0.00000016\n",
      "Epoch: 14260/20000, Loss: 0.00000016\n",
      "Epoch: 14270/20000, Loss: 0.00000016\n",
      "Epoch: 14280/20000, Loss: 0.00000016\n",
      "Epoch: 14290/20000, Loss: 0.00000015\n",
      "Epoch: 14300/20000, Loss: 0.00000015\n",
      "Epoch: 14310/20000, Loss: 0.00000017\n",
      "Epoch: 14320/20000, Loss: 0.00000017\n",
      "Epoch: 14330/20000, Loss: 0.00000016\n",
      "Epoch: 14340/20000, Loss: 0.00000016\n",
      "Epoch: 14350/20000, Loss: 0.00000015\n",
      "Epoch: 14360/20000, Loss: 0.00000015\n",
      "Epoch: 14370/20000, Loss: 0.00000015\n",
      "Epoch: 14380/20000, Loss: 0.00000020\n",
      "Epoch: 14390/20000, Loss: 0.00000015\n",
      "Epoch: 14400/20000, Loss: 0.00000015\n",
      "Epoch: 14410/20000, Loss: 0.00000015\n",
      "Epoch: 14420/20000, Loss: 0.00000015\n",
      "Epoch: 14430/20000, Loss: 0.00000014\n",
      "Epoch: 14440/20000, Loss: 0.00000014\n",
      "Epoch: 14450/20000, Loss: 0.00000014\n",
      "Epoch: 14460/20000, Loss: 0.00000016\n",
      "Epoch: 14470/20000, Loss: 0.00000017\n",
      "Epoch: 14480/20000, Loss: 0.00000015\n",
      "Epoch: 14490/20000, Loss: 0.00000014\n",
      "Epoch: 14500/20000, Loss: 0.00000014\n",
      "Epoch: 14510/20000, Loss: 0.00000014\n",
      "Epoch: 14520/20000, Loss: 0.00000015\n",
      "Epoch: 14530/20000, Loss: 0.00000014\n",
      "Epoch: 14540/20000, Loss: 0.00000014\n",
      "Epoch: 14550/20000, Loss: 0.00000014\n",
      "Epoch: 14560/20000, Loss: 0.00000014\n",
      "Epoch: 14570/20000, Loss: 0.00000014\n",
      "Epoch: 14580/20000, Loss: 0.00000014\n",
      "Epoch: 14590/20000, Loss: 0.00000024\n",
      "Epoch: 14600/20000, Loss: 0.00000016\n",
      "Epoch: 14610/20000, Loss: 0.00000014\n",
      "Epoch: 14620/20000, Loss: 0.00000014\n",
      "Epoch: 14630/20000, Loss: 0.00000013\n",
      "Epoch: 14640/20000, Loss: 0.00000013\n",
      "Epoch: 14650/20000, Loss: 0.00000013\n",
      "Epoch: 14660/20000, Loss: 0.00000013\n",
      "Epoch: 14670/20000, Loss: 0.00000013\n",
      "Epoch: 14680/20000, Loss: 0.00000015\n",
      "Epoch: 14690/20000, Loss: 0.00000015\n",
      "Epoch: 14700/20000, Loss: 0.00000013\n",
      "Epoch: 14710/20000, Loss: 0.00000013\n",
      "Epoch: 14720/20000, Loss: 0.00000013\n",
      "Epoch: 14730/20000, Loss: 0.00000013\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Epoch: 14740/20000, Loss: 0.00000013\n",
      "Epoch: 14750/20000, Loss: 0.00000015\n",
      "Epoch: 14760/20000, Loss: 0.00000012\n",
      "Epoch: 14770/20000, Loss: 0.00000013\n",
      "Epoch: 14780/20000, Loss: 0.00000012\n",
      "Epoch: 14790/20000, Loss: 0.00000012\n",
      "Epoch: 14800/20000, Loss: 0.00000012\n",
      "Epoch: 14810/20000, Loss: 0.00000014\n",
      "Epoch: 14820/20000, Loss: 0.00000020\n",
      "Epoch: 14830/20000, Loss: 0.00000014\n",
      "Epoch: 14840/20000, Loss: 0.00000012\n",
      "Epoch: 14850/20000, Loss: 0.00000012\n",
      "Epoch: 14860/20000, Loss: 0.00000012\n",
      "Epoch: 14870/20000, Loss: 0.00000012\n",
      "Epoch: 14880/20000, Loss: 0.00000012\n",
      "Epoch: 14890/20000, Loss: 0.00000012\n",
      "Epoch: 14900/20000, Loss: 0.00000017\n",
      "Epoch: 14910/20000, Loss: 0.00000012\n",
      "Epoch: 14920/20000, Loss: 0.00000012\n",
      "Epoch: 14930/20000, Loss: 0.00000012\n",
      "Epoch: 14940/20000, Loss: 0.00000012\n",
      "Epoch: 14950/20000, Loss: 0.00000016\n",
      "Epoch: 14960/20000, Loss: 0.00000013\n",
      "Epoch: 14970/20000, Loss: 0.00000012\n",
      "Epoch: 14980/20000, Loss: 0.00000011\n",
      "Epoch: 14990/20000, Loss: 0.00000011\n",
      "Epoch: 15000/20000, Loss: 0.00000011\n",
      "Epoch: 15010/20000, Loss: 0.00000011\n",
      "Epoch: 15020/20000, Loss: 0.00000020\n",
      "Epoch: 15030/20000, Loss: 0.00000016\n",
      "Epoch: 15040/20000, Loss: 0.00000012\n",
      "Epoch: 15050/20000, Loss: 0.00000011\n",
      "Epoch: 15060/20000, Loss: 0.00000012\n",
      "Epoch: 15070/20000, Loss: 0.00000013\n",
      "Epoch: 15080/20000, Loss: 0.00000011\n",
      "Epoch: 15090/20000, Loss: 0.00000011\n",
      "Epoch: 15100/20000, Loss: 0.00000011\n",
      "Epoch: 15110/20000, Loss: 0.00000011\n",
      "Epoch: 15120/20000, Loss: 0.00000010\n",
      "Epoch: 15130/20000, Loss: 0.00000010\n",
      "Epoch: 15140/20000, Loss: 0.00000010\n",
      "Epoch: 15150/20000, Loss: 0.00000010\n",
      "Epoch: 15160/20000, Loss: 0.00000017\n",
      "Epoch: 15170/20000, Loss: 0.00000015\n",
      "Epoch: 15180/20000, Loss: 0.00000011\n",
      "Epoch: 15190/20000, Loss: 0.00000011\n",
      "Epoch: 15200/20000, Loss: 0.00000010\n",
      "Epoch: 15210/20000, Loss: 0.00000012\n",
      "Epoch: 15220/20000, Loss: 0.00000014\n",
      "Epoch: 15230/20000, Loss: 0.00000011\n",
      "Epoch: 15240/20000, Loss: 0.00000011\n",
      "Epoch: 15250/20000, Loss: 0.00000010\n",
      "Epoch: 15260/20000, Loss: 0.00000010\n",
      "Epoch: 15270/20000, Loss: 0.00000010\n",
      "Epoch: 15280/20000, Loss: 0.00000010\n",
      "Epoch: 15290/20000, Loss: 0.00000010\n",
      "Epoch: 15300/20000, Loss: 0.00000010\n",
      "Epoch: 15310/20000, Loss: 0.00000010\n",
      "Epoch: 15320/20000, Loss: 0.00000015\n",
      "Epoch: 15330/20000, Loss: 0.00000010\n",
      "Epoch: 15340/20000, Loss: 0.00000010\n",
      "Epoch: 15350/20000, Loss: 0.00000010\n",
      "Epoch: 15360/20000, Loss: 0.00000010\n",
      "Epoch: 15370/20000, Loss: 0.00000012\n",
      "Epoch: 15380/20000, Loss: 0.00000011\n",
      "Epoch: 15390/20000, Loss: 0.00000010\n",
      "Epoch: 15400/20000, Loss: 0.00000009\n",
      "Epoch: 15410/20000, Loss: 0.00000009\n",
      "Epoch: 15420/20000, Loss: 0.00000009\n",
      "Epoch: 15430/20000, Loss: 0.00000009\n",
      "Epoch: 15440/20000, Loss: 0.00000010\n",
      "Epoch: 15450/20000, Loss: 0.00000016\n",
      "Epoch: 15460/20000, Loss: 0.00000011\n",
      "Epoch: 15470/20000, Loss: 0.00000010\n",
      "Epoch: 15480/20000, Loss: 0.00000010\n",
      "Epoch: 15490/20000, Loss: 0.00000009\n",
      "Epoch: 15500/20000, Loss: 0.00000010\n",
      "Epoch: 15510/20000, Loss: 0.00000019\n",
      "Epoch: 15520/20000, Loss: 0.00000011\n",
      "Epoch: 15530/20000, Loss: 0.00000009\n",
      "Epoch: 15540/20000, Loss: 0.00000009\n",
      "Epoch: 15550/20000, Loss: 0.00000009\n",
      "Epoch: 15560/20000, Loss: 0.00000009\n",
      "Epoch: 15570/20000, Loss: 0.00000009\n",
      "Epoch: 15580/20000, Loss: 0.00000009\n",
      "Epoch: 15590/20000, Loss: 0.00000009\n",
      "Epoch: 15600/20000, Loss: 0.00000010\n",
      "Epoch: 15610/20000, Loss: 0.00000014\n",
      "Epoch: 15620/20000, Loss: 0.00000009\n",
      "Epoch: 15630/20000, Loss: 0.00000010\n",
      "Epoch: 15640/20000, Loss: 0.00000009\n",
      "Epoch: 15650/20000, Loss: 0.00000009\n",
      "Epoch: 15660/20000, Loss: 0.00000009\n",
      "Epoch: 15670/20000, Loss: 0.00000010\n",
      "Epoch: 15680/20000, Loss: 0.00000015\n",
      "Epoch: 15690/20000, Loss: 0.00000010\n",
      "Epoch: 15700/20000, Loss: 0.00000008\n",
      "Epoch: 15710/20000, Loss: 0.00000008\n",
      "Epoch: 15720/20000, Loss: 0.00000008\n",
      "Epoch: 15730/20000, Loss: 0.00000008\n",
      "Epoch: 15740/20000, Loss: 0.00000008\n",
      "Epoch: 15750/20000, Loss: 0.00000008\n",
      "Epoch: 15760/20000, Loss: 0.00000008\n",
      "Epoch: 15770/20000, Loss: 0.00000008\n",
      "Epoch: 15780/20000, Loss: 0.00000008\n",
      "Epoch: 15790/20000, Loss: 0.00000008\n",
      "Epoch: 15800/20000, Loss: 0.00000017\n",
      "Epoch: 15810/20000, Loss: 0.00000015\n",
      "Epoch: 15820/20000, Loss: 0.00000012\n",
      "Epoch: 15830/20000, Loss: 0.00000010\n",
      "Epoch: 15840/20000, Loss: 0.00000008\n",
      "Epoch: 15850/20000, Loss: 0.00000008\n",
      "Epoch: 15860/20000, Loss: 0.00000008\n",
      "Epoch: 15870/20000, Loss: 0.00000008\n",
      "Epoch: 15880/20000, Loss: 0.00000008\n",
      "Epoch: 15890/20000, Loss: 0.00000008\n",
      "Epoch: 15900/20000, Loss: 0.00000008\n",
      "Epoch: 15910/20000, Loss: 0.00000010\n",
      "Epoch: 15920/20000, Loss: 0.00000010\n",
      "Epoch: 15930/20000, Loss: 0.00000008\n",
      "Epoch: 15940/20000, Loss: 0.00000008\n",
      "Epoch: 15950/20000, Loss: 0.00000008\n",
      "Epoch: 15960/20000, Loss: 0.00000008\n",
      "Epoch: 15970/20000, Loss: 0.00000008\n",
      "Epoch: 15980/20000, Loss: 0.00000008\n",
      "Epoch: 15990/20000, Loss: 0.00000008\n",
      "Epoch: 16000/20000, Loss: 0.00000007\n",
      "Epoch: 16010/20000, Loss: 0.00000007\n",
      "Epoch: 16020/20000, Loss: 0.00000008\n",
      "Epoch: 16030/20000, Loss: 0.00000020\n",
      "Epoch: 16040/20000, Loss: 0.00000010\n",
      "Epoch: 16050/20000, Loss: 0.00000012\n",
      "Epoch: 16060/20000, Loss: 0.00000008\n",
      "Epoch: 16070/20000, Loss: 0.00000007\n",
      "Epoch: 16080/20000, Loss: 0.00000007\n",
      "Epoch: 16090/20000, Loss: 0.00000007\n",
      "Epoch: 16100/20000, Loss: 0.00000007\n",
      "Epoch: 16110/20000, Loss: 0.00000007\n",
      "Epoch: 16120/20000, Loss: 0.00000007\n",
      "Epoch: 16130/20000, Loss: 0.00000008\n",
      "Epoch: 16140/20000, Loss: 0.00000014\n",
      "Epoch: 16150/20000, Loss: 0.00000009\n",
      "Epoch: 16160/20000, Loss: 0.00000008\n",
      "Epoch: 16170/20000, Loss: 0.00000007\n",
      "Epoch: 16180/20000, Loss: 0.00000007\n",
      "Epoch: 16190/20000, Loss: 0.00000007\n",
      "Epoch: 16200/20000, Loss: 0.00000007\n",
      "Epoch: 16210/20000, Loss: 0.00000008\n",
      "Epoch: 16220/20000, Loss: 0.00000016\n",
      "Epoch: 16230/20000, Loss: 0.00000008\n",
      "Epoch: 16240/20000, Loss: 0.00000007\n",
      "Epoch: 16250/20000, Loss: 0.00000007\n",
      "Epoch: 16260/20000, Loss: 0.00000007\n",
      "Epoch: 16270/20000, Loss: 0.00000009\n",
      "Epoch: 16280/20000, Loss: 0.00000008\n",
      "Epoch: 16290/20000, Loss: 0.00000007\n",
      "Epoch: 16300/20000, Loss: 0.00000007\n",
      "Epoch: 16310/20000, Loss: 0.00000007\n",
      "Epoch: 16320/20000, Loss: 0.00000007\n",
      "Epoch: 16330/20000, Loss: 0.00000007\n",
      "Epoch: 16340/20000, Loss: 0.00000007\n",
      "Epoch: 16350/20000, Loss: 0.00000007\n",
      "Epoch: 16360/20000, Loss: 0.00000007\n",
      "Epoch: 16370/20000, Loss: 0.00000007\n",
      "Epoch: 16380/20000, Loss: 0.00000007\n",
      "Epoch: 16390/20000, Loss: 0.00000018\n",
      "Epoch: 16400/20000, Loss: 0.00000011\n",
      "Epoch: 16410/20000, Loss: 0.00000008\n",
      "Epoch: 16420/20000, Loss: 0.00000008\n",
      "Epoch: 16430/20000, Loss: 0.00000009\n",
      "Epoch: 16440/20000, Loss: 0.00000007\n",
      "Epoch: 16450/20000, Loss: 0.00000007\n",
      "Epoch: 16460/20000, Loss: 0.00000006\n",
      "Epoch: 16470/20000, Loss: 0.00000007\n",
      "Epoch: 16480/20000, Loss: 0.00000007\n",
      "Epoch: 16490/20000, Loss: 0.00000008\n",
      "Epoch: 16500/20000, Loss: 0.00000008\n",
      "Epoch: 16510/20000, Loss: 0.00000007\n",
      "Epoch: 16520/20000, Loss: 0.00000006\n",
      "Epoch: 16530/20000, Loss: 0.00000006\n",
      "Epoch: 16540/20000, Loss: 0.00000006\n",
      "Epoch: 16550/20000, Loss: 0.00000008\n",
      "Epoch: 16560/20000, Loss: 0.00000012\n",
      "Epoch: 16570/20000, Loss: 0.00000009\n",
      "Epoch: 16580/20000, Loss: 0.00000012\n",
      "Epoch: 16590/20000, Loss: 0.00000008\n",
      "Epoch: 16600/20000, Loss: 0.00000007\n",
      "Epoch: 16610/20000, Loss: 0.00000006\n",
      "Epoch: 16620/20000, Loss: 0.00000006\n",
      "Epoch: 16630/20000, Loss: 0.00000006\n",
      "Epoch: 16640/20000, Loss: 0.00000006\n",
      "Epoch: 16650/20000, Loss: 0.00000006\n",
      "Epoch: 16660/20000, Loss: 0.00000006\n",
      "Epoch: 16670/20000, Loss: 0.00000007\n",
      "Epoch: 16680/20000, Loss: 0.00000014\n",
      "Epoch: 16690/20000, Loss: 0.00000011\n",
      "Epoch: 16700/20000, Loss: 0.00000009\n",
      "Epoch: 16710/20000, Loss: 0.00000007\n",
      "Epoch: 16720/20000, Loss: 0.00000006\n",
      "Epoch: 16730/20000, Loss: 0.00000006\n",
      "Epoch: 16740/20000, Loss: 0.00000006\n",
      "Epoch: 16750/20000, Loss: 0.00000006\n",
      "Epoch: 16760/20000, Loss: 0.00000006\n",
      "Epoch: 16770/20000, Loss: 0.00000006\n",
      "Epoch: 16780/20000, Loss: 0.00000006\n",
      "Epoch: 16790/20000, Loss: 0.00000006\n",
      "Epoch: 16800/20000, Loss: 0.00000006\n",
      "Epoch: 16810/20000, Loss: 0.00000007\n",
      "Epoch: 16820/20000, Loss: 0.00000027\n",
      "Epoch: 16830/20000, Loss: 0.00000011\n",
      "Epoch: 16840/20000, Loss: 0.00000007\n",
      "Epoch: 16850/20000, Loss: 0.00000006\n",
      "Epoch: 16860/20000, Loss: 0.00000006\n",
      "Epoch: 16870/20000, Loss: 0.00000006\n",
      "Epoch: 16880/20000, Loss: 0.00000006\n",
      "Epoch: 16890/20000, Loss: 0.00000006\n",
      "Epoch: 16900/20000, Loss: 0.00000006\n",
      "Epoch: 16910/20000, Loss: 0.00000006\n",
      "Epoch: 16920/20000, Loss: 0.00000006\n",
      "Epoch: 16930/20000, Loss: 0.00000007\n",
      "Epoch: 16940/20000, Loss: 0.00000012\n",
      "Epoch: 16950/20000, Loss: 0.00000006\n",
      "Epoch: 16960/20000, Loss: 0.00000006\n",
      "Epoch: 16970/20000, Loss: 0.00000006\n",
      "Epoch: 16980/20000, Loss: 0.00000006\n",
      "Epoch: 16990/20000, Loss: 0.00000006\n",
      "Epoch: 17000/20000, Loss: 0.00000005\n",
      "Epoch: 17010/20000, Loss: 0.00000006\n",
      "Epoch: 17020/20000, Loss: 0.00000006\n",
      "Epoch: 17030/20000, Loss: 0.00000013\n",
      "Epoch: 17040/20000, Loss: 0.00000007\n",
      "Epoch: 17050/20000, Loss: 0.00000006\n",
      "Epoch: 17060/20000, Loss: 0.00000006\n",
      "Epoch: 17070/20000, Loss: 0.00000006\n",
      "Epoch: 17080/20000, Loss: 0.00000005\n",
      "Epoch: 17090/20000, Loss: 0.00000006\n",
      "Epoch: 17100/20000, Loss: 0.00000012\n",
      "Epoch: 17110/20000, Loss: 0.00000006\n",
      "Epoch: 17120/20000, Loss: 0.00000006\n",
      "Epoch: 17130/20000, Loss: 0.00000005\n",
      "Epoch: 17140/20000, Loss: 0.00000005\n",
      "Epoch: 17150/20000, Loss: 0.00000005\n",
      "Epoch: 17160/20000, Loss: 0.00000005\n",
      "Epoch: 17170/20000, Loss: 0.00000010\n",
      "Epoch: 17180/20000, Loss: 0.00000006\n",
      "Epoch: 17190/20000, Loss: 0.00000008\n",
      "Epoch: 17200/20000, Loss: 0.00000005\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Epoch: 17210/20000, Loss: 0.00000006\n",
      "Epoch: 17220/20000, Loss: 0.00000005\n",
      "Epoch: 17230/20000, Loss: 0.00000007\n",
      "Epoch: 17240/20000, Loss: 0.00000010\n",
      "Epoch: 17250/20000, Loss: 0.00000006\n",
      "Epoch: 17260/20000, Loss: 0.00000005\n",
      "Epoch: 17270/20000, Loss: 0.00000005\n",
      "Epoch: 17280/20000, Loss: 0.00000005\n",
      "Epoch: 17290/20000, Loss: 0.00000005\n",
      "Epoch: 17300/20000, Loss: 0.00000005\n",
      "Epoch: 17310/20000, Loss: 0.00000005\n",
      "Epoch: 17320/20000, Loss: 0.00000005\n",
      "Epoch: 17330/20000, Loss: 0.00000005\n",
      "Epoch: 17340/20000, Loss: 0.00000005\n",
      "Epoch: 17350/20000, Loss: 0.00000005\n",
      "Epoch: 17360/20000, Loss: 0.00000005\n",
      "Epoch: 17370/20000, Loss: 0.00000007\n",
      "Epoch: 17380/20000, Loss: 0.00000009\n",
      "Epoch: 17390/20000, Loss: 0.00000012\n",
      "Epoch: 17400/20000, Loss: 0.00000007\n",
      "Epoch: 17410/20000, Loss: 0.00000006\n",
      "Epoch: 17420/20000, Loss: 0.00000005\n",
      "Epoch: 17430/20000, Loss: 0.00000005\n",
      "Epoch: 17440/20000, Loss: 0.00000005\n",
      "Epoch: 17450/20000, Loss: 0.00000005\n",
      "Epoch: 17460/20000, Loss: 0.00000005\n",
      "Epoch: 17470/20000, Loss: 0.00000005\n",
      "Epoch: 17480/20000, Loss: 0.00000005\n",
      "Epoch: 17490/20000, Loss: 0.00000005\n",
      "Epoch: 17500/20000, Loss: 0.00000009\n",
      "Epoch: 17510/20000, Loss: 0.00000005\n",
      "Epoch: 17520/20000, Loss: 0.00000007\n",
      "Epoch: 17530/20000, Loss: 0.00000005\n",
      "Epoch: 17540/20000, Loss: 0.00000005\n",
      "Epoch: 17550/20000, Loss: 0.00000005\n",
      "Epoch: 17560/20000, Loss: 0.00000005\n",
      "Epoch: 17570/20000, Loss: 0.00000005\n",
      "Epoch: 17580/20000, Loss: 0.00000005\n",
      "Epoch: 17590/20000, Loss: 0.00000005\n",
      "Epoch: 17600/20000, Loss: 0.00000007\n",
      "Epoch: 17610/20000, Loss: 0.00000007\n",
      "Epoch: 17620/20000, Loss: 0.00000007\n",
      "Epoch: 17630/20000, Loss: 0.00000005\n",
      "Epoch: 17640/20000, Loss: 0.00000005\n",
      "Epoch: 17650/20000, Loss: 0.00000005\n",
      "Epoch: 17660/20000, Loss: 0.00000005\n",
      "Epoch: 17670/20000, Loss: 0.00000005\n",
      "Epoch: 17680/20000, Loss: 0.00000005\n",
      "Epoch: 17690/20000, Loss: 0.00000008\n",
      "Epoch: 17700/20000, Loss: 0.00000006\n",
      "Epoch: 17710/20000, Loss: 0.00000005\n",
      "Epoch: 17720/20000, Loss: 0.00000005\n",
      "Epoch: 17730/20000, Loss: 0.00000005\n",
      "Epoch: 17740/20000, Loss: 0.00000005\n",
      "Epoch: 17750/20000, Loss: 0.00000005\n",
      "Epoch: 17760/20000, Loss: 0.00000005\n",
      "Epoch: 17770/20000, Loss: 0.00000005\n",
      "Epoch: 17780/20000, Loss: 0.00000004\n",
      "Epoch: 17790/20000, Loss: 0.00000004\n",
      "Epoch: 17800/20000, Loss: 0.00000005\n",
      "Epoch: 17810/20000, Loss: 0.00000007\n",
      "Epoch: 17820/20000, Loss: 0.00000007\n",
      "Epoch: 17830/20000, Loss: 0.00000008\n",
      "Epoch: 17840/20000, Loss: 0.00000005\n",
      "Epoch: 17850/20000, Loss: 0.00000005\n",
      "Epoch: 17860/20000, Loss: 0.00000005\n",
      "Epoch: 17870/20000, Loss: 0.00000008\n",
      "Epoch: 17880/20000, Loss: 0.00000005\n",
      "Epoch: 17890/20000, Loss: 0.00000005\n",
      "Epoch: 17900/20000, Loss: 0.00000005\n",
      "Epoch: 17910/20000, Loss: 0.00000004\n",
      "Epoch: 17920/20000, Loss: 0.00000004\n",
      "Epoch: 17930/20000, Loss: 0.00000004\n",
      "Epoch: 17940/20000, Loss: 0.00000004\n",
      "Epoch: 17950/20000, Loss: 0.00000004\n",
      "Epoch: 17960/20000, Loss: 0.00000006\n",
      "Epoch: 17970/20000, Loss: 0.00000011\n",
      "Epoch: 17980/20000, Loss: 0.00000006\n",
      "Epoch: 17990/20000, Loss: 0.00000005\n",
      "Epoch: 18000/20000, Loss: 0.00000005\n",
      "Epoch: 18010/20000, Loss: 0.00000005\n",
      "Epoch: 18020/20000, Loss: 0.00000008\n",
      "Epoch: 18030/20000, Loss: 0.00000005\n",
      "Epoch: 18040/20000, Loss: 0.00000005\n",
      "Epoch: 18050/20000, Loss: 0.00000005\n",
      "Epoch: 18060/20000, Loss: 0.00000004\n",
      "Epoch: 18070/20000, Loss: 0.00000004\n",
      "Epoch: 18080/20000, Loss: 0.00000005\n",
      "Epoch: 18090/20000, Loss: 0.00000011\n",
      "Epoch: 18100/20000, Loss: 0.00000006\n",
      "Epoch: 18110/20000, Loss: 0.00000006\n",
      "Epoch: 18120/20000, Loss: 0.00000005\n",
      "Epoch: 18130/20000, Loss: 0.00000004\n",
      "Epoch: 18140/20000, Loss: 0.00000004\n",
      "Epoch: 18150/20000, Loss: 0.00000004\n",
      "Epoch: 18160/20000, Loss: 0.00000008\n",
      "Epoch: 18170/20000, Loss: 0.00000005\n",
      "Epoch: 18180/20000, Loss: 0.00000006\n",
      "Epoch: 18190/20000, Loss: 0.00000005\n",
      "Epoch: 18200/20000, Loss: 0.00000004\n",
      "Epoch: 18210/20000, Loss: 0.00000004\n",
      "Epoch: 18220/20000, Loss: 0.00000004\n",
      "Epoch: 18230/20000, Loss: 0.00000004\n",
      "Epoch: 18240/20000, Loss: 0.00000004\n",
      "Epoch: 18250/20000, Loss: 0.00000006\n",
      "Epoch: 18260/20000, Loss: 0.00000015\n",
      "Epoch: 18270/20000, Loss: 0.00000004\n",
      "Epoch: 18280/20000, Loss: 0.00000006\n",
      "Epoch: 18290/20000, Loss: 0.00000004\n",
      "Epoch: 18300/20000, Loss: 0.00000004\n",
      "Epoch: 18310/20000, Loss: 0.00000004\n",
      "Epoch: 18320/20000, Loss: 0.00000004\n",
      "Epoch: 18330/20000, Loss: 0.00000004\n",
      "Epoch: 18340/20000, Loss: 0.00000004\n",
      "Epoch: 18350/20000, Loss: 0.00000004\n",
      "Epoch: 18360/20000, Loss: 0.00000008\n",
      "Epoch: 18370/20000, Loss: 0.00000004\n",
      "Epoch: 18380/20000, Loss: 0.00000005\n",
      "Epoch: 18390/20000, Loss: 0.00000005\n",
      "Epoch: 18400/20000, Loss: 0.00000004\n",
      "Epoch: 18410/20000, Loss: 0.00000004\n",
      "Epoch: 18420/20000, Loss: 0.00000004\n",
      "Epoch: 18430/20000, Loss: 0.00000004\n",
      "Epoch: 18440/20000, Loss: 0.00000004\n",
      "Epoch: 18450/20000, Loss: 0.00000004\n",
      "Epoch: 18460/20000, Loss: 0.00000004\n",
      "Epoch: 18470/20000, Loss: 0.00000010\n",
      "Epoch: 18480/20000, Loss: 0.00000005\n",
      "Epoch: 18490/20000, Loss: 0.00000007\n",
      "Epoch: 18500/20000, Loss: 0.00000004\n",
      "Epoch: 18510/20000, Loss: 0.00000004\n",
      "Epoch: 18520/20000, Loss: 0.00000004\n",
      "Epoch: 18530/20000, Loss: 0.00000004\n",
      "Epoch: 18540/20000, Loss: 0.00000007\n",
      "Epoch: 18550/20000, Loss: 0.00000005\n",
      "Epoch: 18560/20000, Loss: 0.00000004\n",
      "Epoch: 18570/20000, Loss: 0.00000004\n",
      "Epoch: 18580/20000, Loss: 0.00000004\n",
      "Epoch: 18590/20000, Loss: 0.00000004\n",
      "Epoch: 18600/20000, Loss: 0.00000004\n",
      "Epoch: 18610/20000, Loss: 0.00000004\n",
      "Epoch: 18620/20000, Loss: 0.00000004\n",
      "Epoch: 18630/20000, Loss: 0.00000004\n",
      "Epoch: 18640/20000, Loss: 0.00000004\n",
      "Epoch: 18650/20000, Loss: 0.00000005\n",
      "Epoch: 18660/20000, Loss: 0.00000018\n",
      "Epoch: 18670/20000, Loss: 0.00000010\n",
      "Epoch: 18680/20000, Loss: 0.00000005\n",
      "Epoch: 18690/20000, Loss: 0.00000005\n",
      "Epoch: 18700/20000, Loss: 0.00000004\n",
      "Epoch: 18710/20000, Loss: 0.00000004\n",
      "Epoch: 18720/20000, Loss: 0.00000004\n",
      "Epoch: 18730/20000, Loss: 0.00000004\n",
      "Epoch: 18740/20000, Loss: 0.00000004\n",
      "Epoch: 18750/20000, Loss: 0.00000004\n",
      "Epoch: 18760/20000, Loss: 0.00000004\n",
      "Epoch: 18770/20000, Loss: 0.00000004\n",
      "Epoch: 18780/20000, Loss: 0.00000013\n",
      "Epoch: 18790/20000, Loss: 0.00000007\n",
      "Epoch: 18800/20000, Loss: 0.00000005\n",
      "Epoch: 18810/20000, Loss: 0.00000004\n",
      "Epoch: 18820/20000, Loss: 0.00000004\n",
      "Epoch: 18830/20000, Loss: 0.00000004\n",
      "Epoch: 18840/20000, Loss: 0.00000004\n",
      "Epoch: 18850/20000, Loss: 0.00000010\n",
      "Epoch: 18860/20000, Loss: 0.00000004\n",
      "Epoch: 18870/20000, Loss: 0.00000004\n",
      "Epoch: 18880/20000, Loss: 0.00000004\n",
      "Epoch: 18890/20000, Loss: 0.00000004\n",
      "Epoch: 18900/20000, Loss: 0.00000004\n",
      "Epoch: 18910/20000, Loss: 0.00000004\n",
      "Epoch: 18920/20000, Loss: 0.00000004\n",
      "Epoch: 18930/20000, Loss: 0.00000004\n",
      "Epoch: 18940/20000, Loss: 0.00000004\n",
      "Epoch: 18950/20000, Loss: 0.00000017\n",
      "Epoch: 18960/20000, Loss: 0.00000012\n",
      "Epoch: 18970/20000, Loss: 0.00000004\n",
      "Epoch: 18980/20000, Loss: 0.00000005\n",
      "Epoch: 18990/20000, Loss: 0.00000004\n",
      "Epoch: 19000/20000, Loss: 0.00000004\n",
      "Epoch: 19010/20000, Loss: 0.00000004\n",
      "Epoch: 19020/20000, Loss: 0.00000003\n",
      "Epoch: 19030/20000, Loss: 0.00000004\n",
      "Epoch: 19040/20000, Loss: 0.00000020\n",
      "Epoch: 19050/20000, Loss: 0.00000007\n",
      "Epoch: 19060/20000, Loss: 0.00000004\n",
      "Epoch: 19070/20000, Loss: 0.00000004\n",
      "Epoch: 19080/20000, Loss: 0.00000003\n",
      "Epoch: 19090/20000, Loss: 0.00000004\n",
      "Epoch: 19100/20000, Loss: 0.00000003\n",
      "Epoch: 19110/20000, Loss: 0.00000003\n",
      "Epoch: 19120/20000, Loss: 0.00000003\n",
      "Epoch: 19130/20000, Loss: 0.00000003\n",
      "Epoch: 19140/20000, Loss: 0.00000003\n",
      "Epoch: 19150/20000, Loss: 0.00000003\n",
      "Epoch: 19160/20000, Loss: 0.00000005\n",
      "Epoch: 19170/20000, Loss: 0.00000018\n",
      "Epoch: 19180/20000, Loss: 0.00000004\n",
      "Epoch: 19190/20000, Loss: 0.00000005\n",
      "Epoch: 19200/20000, Loss: 0.00000004\n",
      "Epoch: 19210/20000, Loss: 0.00000003\n",
      "Epoch: 19220/20000, Loss: 0.00000003\n",
      "Epoch: 19230/20000, Loss: 0.00000003\n",
      "Epoch: 19240/20000, Loss: 0.00000004\n",
      "Epoch: 19250/20000, Loss: 0.00000014\n",
      "Epoch: 19260/20000, Loss: 0.00000007\n",
      "Epoch: 19270/20000, Loss: 0.00000005\n",
      "Epoch: 19280/20000, Loss: 0.00000003\n",
      "Epoch: 19290/20000, Loss: 0.00000003\n",
      "Epoch: 19300/20000, Loss: 0.00000003\n",
      "Epoch: 19310/20000, Loss: 0.00000003\n",
      "Epoch: 19320/20000, Loss: 0.00000003\n",
      "Epoch: 19330/20000, Loss: 0.00000003\n",
      "Epoch: 19340/20000, Loss: 0.00000003\n",
      "Epoch: 19350/20000, Loss: 0.00000003\n",
      "Epoch: 19360/20000, Loss: 0.00000003\n",
      "Epoch: 19370/20000, Loss: 0.00000011\n",
      "Epoch: 19380/20000, Loss: 0.00000006\n",
      "Epoch: 19390/20000, Loss: 0.00000006\n",
      "Epoch: 19400/20000, Loss: 0.00000004\n",
      "Epoch: 19410/20000, Loss: 0.00000004\n",
      "Epoch: 19420/20000, Loss: 0.00000004\n",
      "Epoch: 19430/20000, Loss: 0.00000005\n",
      "Epoch: 19440/20000, Loss: 0.00000007\n",
      "Epoch: 19450/20000, Loss: 0.00000004\n",
      "Epoch: 19460/20000, Loss: 0.00000003\n",
      "Epoch: 19470/20000, Loss: 0.00000003\n",
      "Epoch: 19480/20000, Loss: 0.00000003\n",
      "Epoch: 19490/20000, Loss: 0.00000003\n",
      "Epoch: 19500/20000, Loss: 0.00000003\n",
      "Epoch: 19510/20000, Loss: 0.00000005\n",
      "Epoch: 19520/20000, Loss: 0.00000008\n",
      "Epoch: 19530/20000, Loss: 0.00000005\n",
      "Epoch: 19540/20000, Loss: 0.00000004\n",
      "Epoch: 19550/20000, Loss: 0.00000004\n",
      "Epoch: 19560/20000, Loss: 0.00000004\n",
      "Epoch: 19570/20000, Loss: 0.00000006\n",
      "Epoch: 19580/20000, Loss: 0.00000003\n",
      "Epoch: 19590/20000, Loss: 0.00000004\n",
      "Epoch: 19600/20000, Loss: 0.00000003\n",
      "Epoch: 19610/20000, Loss: 0.00000004\n",
      "Epoch: 19620/20000, Loss: 0.00000008\n",
      "Epoch: 19630/20000, Loss: 0.00000003\n",
      "Epoch: 19640/20000, Loss: 0.00000004\n",
      "Epoch: 19650/20000, Loss: 0.00000013\n",
      "Epoch: 19660/20000, Loss: 0.00000006\n",
      "Epoch: 19670/20000, Loss: 0.00000005\n",
      "Epoch: 19680/20000, Loss: 0.00000004\n",
      "Epoch: 19690/20000, Loss: 0.00000003\n",
      "Epoch: 19700/20000, Loss: 0.00000003\n",
      "Epoch: 19710/20000, Loss: 0.00000003\n",
      "Epoch: 19720/20000, Loss: 0.00000004\n",
      "Epoch: 19730/20000, Loss: 0.00000011\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Epoch: 19740/20000, Loss: 0.00000005\n",
      "Epoch: 19750/20000, Loss: 0.00000004\n",
      "Epoch: 19760/20000, Loss: 0.00000004\n",
      "Epoch: 19770/20000, Loss: 0.00000003\n",
      "Epoch: 19780/20000, Loss: 0.00000003\n",
      "Epoch: 19790/20000, Loss: 0.00000003\n",
      "Epoch: 19800/20000, Loss: 0.00000003\n",
      "Epoch: 19810/20000, Loss: 0.00000006\n",
      "Epoch: 19820/20000, Loss: 0.00000006\n",
      "Epoch: 19830/20000, Loss: 0.00000003\n",
      "Epoch: 19840/20000, Loss: 0.00000004\n",
      "Epoch: 19850/20000, Loss: 0.00000003\n",
      "Epoch: 19860/20000, Loss: 0.00000003\n",
      "Epoch: 19870/20000, Loss: 0.00000004\n",
      "Epoch: 19880/20000, Loss: 0.00000010\n",
      "Epoch: 19890/20000, Loss: 0.00000005\n",
      "Epoch: 19900/20000, Loss: 0.00000004\n",
      "Epoch: 19910/20000, Loss: 0.00000003\n",
      "Epoch: 19920/20000, Loss: 0.00000003\n",
      "Epoch: 19930/20000, Loss: 0.00000003\n",
      "Epoch: 19940/20000, Loss: 0.00000003\n",
      "Epoch: 19950/20000, Loss: 0.00000003\n",
      "Epoch: 19960/20000, Loss: 0.00000003\n",
      "Epoch: 19970/20000, Loss: 0.00000003\n",
      "Epoch: 19980/20000, Loss: 0.00000004\n",
      "Epoch: 19990/20000, Loss: 0.00000016\n",
      "Epoch: 20000/20000, Loss: 0.00000008\n",
      "torch.Size([1, 256])\n",
      "torch.Size([256])\n"
     ]
    }
   ],
   "source": [
    "# Toy problem data\n",
    "input_size = 256\n",
    "hidden_size = 32\n",
    "output_size = 256\n",
    "sequence_length = 79\n",
    "batch_size = 1\n",
    "num_epochs = 20000\n",
    "\n",
    "\n",
    "# Set random seed for reproducibility\n",
    "torch.manual_seed(42)\n",
    "\n",
    "\n",
    "\n",
    "input_data = u[:,0:79]\n",
    "target_data = u[:,1:80]\n",
    "\n",
    "test_data = u[:,79]\n",
    "#test_target = u[:,80:100]\n",
    "\n",
    "\n",
    "# Convert data to tensors\n",
    "input_tensor = torch.tensor(input_data.T).view(batch_size, sequence_length, input_size).float()\n",
    "target_tensor = torch.tensor(target_data.T).view(batch_size, sequence_length, output_size).float()\n",
    "\n",
    "# Convert test data to tensors\n",
    "test_tensor = torch.tensor(test_data.T).view(batch_size, 1, input_size).float()\n",
    "#test_target_tensor = torch.tensor(test_target.T).view(batch_size, 20, output_size).float()\n",
    "\n",
    "# Create coRNN instance\n",
    "cornn = coRNN(input_size, hidden_size, output_size, dt=0.1, gamma=1.0, epsilon=0.01)\n",
    "\n",
    "# Loss and optimizer\n",
    "criterion = nn.MSELoss()\n",
    "optimizer = torch.optim.Adam(cornn.parameters(), lr=0.001)\n",
    "\n",
    "# Training loop\n",
    "for epoch in range(num_epochs):\n",
    "    # Forward pass\n",
    "    output = cornn(input_tensor)\n",
    "    loss = criterion(output, target_tensor)\n",
    "\n",
    "    # Backward and optimize\n",
    "    optimizer.zero_grad()\n",
    "    loss.backward()\n",
    "    optimizer.step()\n",
    "\n",
    "    # Print progress\n",
    "    if (epoch+1) % 10 == 0:\n",
    "        print(f'Epoch: {epoch+1}/{num_epochs}, Loss: {loss.item():.8f}')\n",
    "\n",
    "\n",
    "with torch.no_grad():\n",
    "    prediction = cornn(test_tensor)\n",
    "\n",
    "print(prediction.shape)\n",
    "\n",
    "final_time_output = prediction[-1, :]\n",
    "print(final_time_output.shape)\n",
    "\n",
    "final_out = final_time_output.detach().numpy().reshape(-1,1)\n",
    "final_true = u[:,-1].reshape(-1,1)\n",
    "\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "id": "4ac1a804",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "torch.Size([1, 1, 256])\n",
      "torch.Size([1, 20, 256])\n"
     ]
    }
   ],
   "source": [
    "print(test_tensor.shape)\n",
    "prediction_tensor = torch.zeros(1, 20, 256).float()\n",
    "print(prediction_tensor.shape)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "id": "e73b12e7",
   "metadata": {},
   "outputs": [],
   "source": [
    "with torch.no_grad():\n",
    "    prediction = cornn(test_tensor)\n",
    "    prediction = prediction.view(1, 1, 256).float()\n",
    "    prediction_tensor[:, 0, :] = prediction\n",
    "    for i in range(19):\n",
    "        prediction = cornn(prediction)\n",
    "        prediction = prediction.view(1, 1, 256).float()\n",
    "        prediction_tensor[:, i+1, :] = prediction"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "id": "68cf2f04",
   "metadata": {},
   "outputs": [],
   "source": [
    "# Exact Solution\n",
    "\n",
    "u_test = u_1.T\n",
    "u_test_full = u_test[80:100, :]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "id": "cd70c84b",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "torch.Size([1, 1, 256])"
      ]
     },
     "execution_count": 8,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "prediction.shape"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "id": "57a01be1",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "(20, 256)"
      ]
     },
     "execution_count": 9,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "u_test_full.shape"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "65936417",
   "metadata": {},
   "source": [
    "### L2 norm"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 10,
   "id": "e92b5fe2",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "torch.Size([20, 256])"
      ]
     },
     "execution_count": 10,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# Extrapolation\n",
    "\n",
    "k1 = ( prediction_tensor - u_test_full)**2\n",
    "u_test_full_tensor = torch.tensor(u_test_full**2)\n",
    "u_test_full_tensor.shape"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 11,
   "id": "9a5129a9",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Relative Error Test:  0.004497675536276817 %\n"
     ]
    }
   ],
   "source": [
    "# Compute the relative L2 error norm (generalization error)\n",
    "relative_error_test = torch.mean(k1)/ torch.mean(u_test_full_tensor)\n",
    "\n",
    "print(\"Relative Error Test: \", relative_error_test.item(), \"%\")"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "60c30f0c",
   "metadata": {},
   "source": [
    "### Max absolute error"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 12,
   "id": "e5652aca",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "tensor(0.1035, dtype=torch.float64)\n"
     ]
    }
   ],
   "source": [
    "R_abs = torch.max(torch.abs(prediction_tensor - u_test_full))\n",
    "print(R_abs)"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "f58215d9",
   "metadata": {},
   "source": [
    "### Explained variance score"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 13,
   "id": "744fa133",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Explained Variance Score: 0.9955023254072071\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "/tmp/ipykernel_14332/2104891356.py:7: UserWarning: To copy construct from a tensor, it is recommended to use sourceTensor.clone().detach() or sourceTensor.clone().detach().requires_grad_(True), rather than torch.tensor(sourceTensor).\n",
      "  a = torch.tensor(a)\n"
     ]
    }
   ],
   "source": [
    "import torch\n",
    "\n",
    "a = prediction_tensor\n",
    "b = u_test_full\n",
    "# Assuming 'a' is your predicted values (model's predictions) and 'b' is the true values (ground truth)\n",
    "# Make sure 'a' and 'b' are PyTorch tensors\n",
    "a = torch.tensor(a)\n",
    "b = torch.tensor(b)\n",
    "# Calculate the mean of 'b'\n",
    "mean_b = torch.mean(b)\n",
    "\n",
    "# Calculate the Explained Variance Score\n",
    "numerator = torch.var(b - a)  # Variance of the differences between 'b' and 'a'\n",
    "denominator = torch.var(b)    # Variance of 'b'\n",
    "evs = 1 - numerator / denominator\n",
    "\n",
    "print(\"Explained Variance Score:\", evs.item())"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "ed83c989",
   "metadata": {},
   "source": [
    "### Mean absolute error"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 14,
   "id": "8e3cf699",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Relative Error Test:  tensor(0.0222, dtype=torch.float64) %\n"
     ]
    }
   ],
   "source": [
    "# Compute the relative L2 error norm (generalization error)\n",
    "relative_error_test = torch.mean(torch.abs(prediction_tensor - u_test_full))\n",
    "\n",
    "print(\"Relative Error Test: \", relative_error_test, \"%\")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 15,
   "id": "05bca726",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "torch.Size([1, 20, 256])\n"
     ]
    },
    {
     "data": {
      "text/plain": [
       "torch.Size([20, 256])"
      ]
     },
     "execution_count": 15,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "print(prediction_tensor.shape)\n",
    "prediction_tensor = torch.squeeze(prediction_tensor)\n",
    "prediction_tensor.shape"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "8d74b054",
   "metadata": {},
   "source": [
    "### Ploting at snapshot"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 16,
   "id": "df4a0a6e",
   "metadata": {},
   "outputs": [],
   "source": [
    "plt.rcParams['figure.figsize'] = [10, 4]\n",
    "\n",
    "from matplotlib.font_manager import FontProperties\n",
    "plt.rcParams['axes.unicode_minus'] = False\n",
    "font_path = 'times-new-roman.ttf'\n",
    "custom_font = FontProperties(fname=font_path)\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 17,
   "id": "60c07151",
   "metadata": {},
   "outputs": [
    {
     "ename": "NameError",
     "evalue": "name 'FixedLocator' is not defined",
     "output_type": "error",
     "traceback": [
      "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m",
      "\u001b[0;31mNameError\u001b[0m                                 Traceback (most recent call last)",
      "Input \u001b[0;32mIn [17]\u001b[0m, in \u001b[0;36m<module>\u001b[0;34m\u001b[0m\n\u001b[1;32m     34\u001b[0m num_ticks \u001b[38;5;241m=\u001b[39m \u001b[38;5;241m3\u001b[39m\n\u001b[1;32m     35\u001b[0m x_ticks \u001b[38;5;241m=\u001b[39m np\u001b[38;5;241m.\u001b[39mlinspace(np\u001b[38;5;241m.\u001b[39mmin(x), np\u001b[38;5;241m.\u001b[39mmax(x), num_ticks)\n\u001b[0;32m---> 37\u001b[0m ax\u001b[38;5;241m.\u001b[39mxaxis\u001b[38;5;241m.\u001b[39mset_major_locator(\u001b[43mFixedLocator\u001b[49m(x_ticks))\n\u001b[1;32m     39\u001b[0m plt\u001b[38;5;241m.\u001b[39mxticks(fontsize\u001b[38;5;241m=\u001b[39m\u001b[38;5;241m20\u001b[39m, fontproperties\u001b[38;5;241m=\u001b[39mcustom_font)\n\u001b[1;32m     40\u001b[0m plt\u001b[38;5;241m.\u001b[39myticks(fontsize\u001b[38;5;241m=\u001b[39m\u001b[38;5;241m20\u001b[39m, fontproperties\u001b[38;5;241m=\u001b[39mcustom_font)\n",
      "\u001b[0;31mNameError\u001b[0m: name 'FixedLocator' is not defined"
     ]
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 504x360 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "import matplotlib.pyplot as plt\n",
    "import numpy as np\n",
    "import torch\n",
    "\n",
    "# Create the figure and axis objects with reduced width\n",
    "fig, ax = plt.subplots(figsize=(7, 5))  # You can adjust the width (8 inches) and height (5 inches) as needed\n",
    "\n",
    "# Make sure the font is Times Roman\n",
    "# plt.rcParams['font.family'] = 'Times New Roman'\n",
    "\n",
    "# # Perform the prediction\n",
    "# with torch.no_grad():\n",
    "#     prediction = cornn(test_tensor)\n",
    "\n",
    "final_time_output = prediction_tensor[3, :]\n",
    "final_out = final_time_output.detach().numpy().reshape(-1, 1)\n",
    "final_true = u_1[:, 83].reshape(-1, 1)\n",
    "\n",
    "# Plot the data with red and blue lines, one with dotted and one with solid style\n",
    "ax.plot(x, final_out, color='red', linestyle='dotted', linewidth=5, label='Prediction')\n",
    "ax.plot(x, final_true, color='blue', linestyle='solid', linewidth=3, label='True')\n",
    "\n",
    "# Set the axis labels\n",
    "ax.set_xlabel(\"$x$\", fontsize=20, color='black', fontproperties=custom_font)\n",
    "ax.set_ylabel(\"$u(x, t)$\", fontsize=20, color='black', fontproperties=custom_font)\n",
    "\n",
    "# Set the title\n",
    "ax.set_title(\"$t = 0.8300$\", fontsize=20, color='black', fontproperties=custom_font)\n",
    "\n",
    "# Set the y-axis ticks to only -1, 0, and 1\n",
    "ax.set_yticks([-1, 0, 1])\n",
    "\n",
    "# Set the number of ticks for x-axis to 3\n",
    "num_ticks = 3\n",
    "x_ticks = np.linspace(np.min(x), np.max(x), num_ticks)\n",
    "\n",
    "ax.xaxis.set_major_locator(FixedLocator(x_ticks))\n",
    "\n",
    "plt.xticks(fontsize=20, fontproperties=custom_font)\n",
    "plt.yticks(fontsize=20, fontproperties=custom_font)\n",
    "\n",
    "# Set the legend\n",
    "# ax.legend()\n",
    "\n",
    "plt.savefig('burg_t_0.83_20_cornn.pdf', dpi=500)\n",
    "plt.savefig('Burg_t_0.83_20_cornn.png', dpi=500)\n",
    "# Show the plot\n",
    "plt.show()\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 18,
   "id": "68dfda35",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 504x360 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "import matplotlib.pyplot as plt\n",
    "import numpy as np\n",
    "import torch\n",
    "\n",
    "# Create the figure and axis objects with reduced width\n",
    "fig, ax = plt.subplots(figsize=(7, 5))  # You can adjust the width (8 inches) and height (5 inches) as needed\n",
    "\n",
    "# Make sure the font is Times Roman\n",
    "# plt.rcParams['font.family'] = 'Times New Roman'\n",
    "\n",
    "# # Perform the prediction\n",
    "# with torch.no_grad():\n",
    "#     prediction = lem(test_tensor)\n",
    "\n",
    "final_time_output = prediction_tensor[-2, :]\n",
    "final_out = final_time_output.detach().numpy().reshape(-1, 1)\n",
    "final_true = u_1[:, -2].reshape(-1, 1)\n",
    "\n",
    "# Plot the data with red and blue lines, one with dotted and one with solid style\n",
    "ax.plot(x, final_out, color='red', linestyle='dotted', linewidth=5, label='Prediction')\n",
    "ax.plot(x, final_true, color='blue', linestyle='solid', linewidth=3, label='True')\n",
    "\n",
    "# Set the axis labels\n",
    "ax.set_xlabel(\"$x$\", fontsize=20, color='black', fontproperties=custom_font)\n",
    "ax.set_ylabel(\"$u(x, t)$\", fontsize=20, color='black', fontproperties=custom_font)\n",
    "\n",
    "# Set the title\n",
    "ax.set_title(\"$t = 0.9800$\", fontsize=20, color='black', fontproperties=custom_font)\n",
    "\n",
    "# Set the number of ticks for x-axis and y-axis to 3\n",
    "ax.set_xticks([-1, 0, 1])\n",
    "ax.set_yticks([-1, 0, 1])\n",
    "\n",
    "plt.xticks(fontsize=20, fontproperties=custom_font)\n",
    "plt.yticks(fontsize=20, fontproperties=custom_font)\n",
    "\n",
    "# Set the legend\n",
    "# ax.legend()\n",
    "\n",
    "plt.savefig('burg_t_0.98_20_cornn.pdf', dpi=500)\n",
    "plt.savefig('Burg_t_0.98_20_cornn.png', dpi=500)\n",
    "# Show the plot\n",
    "plt.show()\n"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "03b9675c",
   "metadata": {},
   "source": [
    "### contour plot"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 19,
   "id": "2cd3dc82",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "torch.Size([1, 79, 256])\n"
     ]
    }
   ],
   "source": [
    "print(input_tensor.shape)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 20,
   "id": "4ca1486a",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "torch.Size([20, 256])\n"
     ]
    }
   ],
   "source": [
    "print(prediction_tensor.shape)\n",
    "prediction_tensor = torch.squeeze(prediction_tensor)\n",
    "input_tensor = torch.squeeze(input_tensor)\n",
    "\n",
    "conc_u = torch.squeeze(input_tensor)\n",
    "concatenated_tensor = torch.cat((conc_u, prediction_tensor), dim=0)\n",
    "\n",
    "x1 = np.linspace(-1, 1, 256)\n",
    "t1 = np.linspace(0, 1, 99)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 21,
   "id": "7572fc1e",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 1080x360 with 2 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "import torch\n",
    "import numpy as np\n",
    "import matplotlib.pyplot as plt\n",
    "from matplotlib.ticker import FixedLocator\n",
    "\n",
    "# Assuming you have defined concatenated_tensor as a PyTorch tensor\n",
    "# concatenated_tensor = torch.cat((tensor1, tensor2), dim=0)\n",
    "\n",
    "# Convert concatenated_tensor to a NumPy array\n",
    "concatenated_array = concatenated_tensor.numpy()\n",
    "\n",
    "# Define custom color levels\n",
    "X, T = np.meshgrid(x1, t1)\n",
    "\n",
    "# Define custom color levels using the minimum and maximum from the NumPy array\n",
    "c_levels = np.linspace(np.min(concatenated_array), np.max(concatenated_array), 100)\n",
    "\n",
    "# Plot the contour\n",
    "plt.figure(figsize=(15, 5))\n",
    "CS1 = plt.contourf(T, X, concatenated_array, levels=c_levels, cmap='coolwarm')\n",
    "\n",
    "# Create a custom font with Times New Roman\n",
    "plt.rcParams['figure.figsize'] = [10, 4]\n",
    "\n",
    "from matplotlib.font_manager import FontProperties\n",
    "plt.rcParams['axes.unicode_minus'] = False\n",
    "font_path = 'times-new-roman.ttf'\n",
    "custom_font = FontProperties(fname=font_path)\n",
    "\n",
    "cbar1 = plt.colorbar(CS1)\n",
    "# Set the number of ticks for the color bar with uniformly distributed numbers\n",
    "num_ticks = 5\n",
    "c_ticks = np.linspace(np.min(concatenated_array), np.max(concatenated_array), num_ticks)\n",
    "cbar1.set_ticks(c_ticks)\n",
    "\n",
    "for t in cbar1.ax.get_yticklabels():\n",
    "    t.set_fontproperties(custom_font)\n",
    "    t.set_fontsize(20)\n",
    "\n",
    "plt.xlabel('$t$', fontsize=20, fontproperties=custom_font)\n",
    "plt.ylabel('$x$', fontsize=20, fontproperties=custom_font)\n",
    "plt.title('$u(x, t)$', fontsize=20, fontproperties=custom_font)\n",
    "plt.xticks(fontsize=20, fontproperties=custom_font)\n",
    "plt.yticks(fontsize=20, fontproperties=custom_font)\n",
    "\n",
    "# Add a dotted line at t = 0.8\n",
    "plt.axvline(x=0.8, color='black', linestyle='dotted')\n",
    "\n",
    "# Set the number of ticks for x-axis and y-axis to 5\n",
    "num_ticks = 5\n",
    "x_ticks = np.linspace(np.min(T), np.max(T), num_ticks)\n",
    "y_ticks = np.linspace(np.min(X), np.max(X), num_ticks)\n",
    "\n",
    "plt.gca().xaxis.set_major_locator(FixedLocator(x_ticks))\n",
    "plt.gca().yaxis.set_major_locator(FixedLocator(y_ticks))\n",
    "cbar1.locator = FixedLocator(c_ticks)\n",
    "\n",
    "plt.savefig('Cornn_burg_20.pdf', dpi=300)\n",
    "plt.savefig('cornn_burg_20.png', dpi=300)\n",
    "# Show the plot\n",
    "plt.show()\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 22,
   "id": "711bd771",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 504x360 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "import matplotlib.pyplot as plt\n",
    "import numpy as np\n",
    "import torch\n",
    "\n",
    "# Create the figure and axis objects with reduced width\n",
    "fig, ax = plt.subplots(figsize=(7, 5))  # You can adjust the width (8 inches) and height (5 inches) as needed\n",
    "\n",
    "# Make sure the font is Times Roman\n",
    "# plt.rcParams['font.family'] = 'Times New Roman'\n",
    "\n",
    "# # Perform the prediction\n",
    "# with torch.no_grad():\n",
    "#     prediction = cornn(test_tensor)\n",
    "\n",
    "final_time_output = prediction_tensor[3, :]\n",
    "final_out = final_time_output.detach().numpy().reshape(-1, 1)\n",
    "final_true = u_1[:, 83].reshape(-1, 1)\n",
    "\n",
    "# Plot the data with red and blue lines, one with dotted and one with solid style\n",
    "ax.plot(x, final_out, color='red', linestyle='dotted', linewidth=5, label='Prediction')\n",
    "ax.plot(x, final_true, color='blue', linestyle='solid', linewidth=3, label='True')\n",
    "\n",
    "# Set the axis labels\n",
    "ax.set_xlabel(\"$x$\", fontsize=20, color='black', fontproperties=custom_font)\n",
    "ax.set_ylabel(\"$u(x, t)$\", fontsize=20, color='black', fontproperties=custom_font)\n",
    "\n",
    "# Set the title\n",
    "ax.set_title(\"$t = 0.8300$\", fontsize=20, color='black', fontproperties=custom_font)\n",
    "\n",
    "# Set the y-axis ticks to only -1, 0, and 1\n",
    "ax.set_yticks([-1, 0, 1])\n",
    "\n",
    "# Set the number of ticks for x-axis to 3\n",
    "num_ticks = 3\n",
    "x_ticks = np.linspace(np.min(x), np.max(x), num_ticks)\n",
    "\n",
    "ax.xaxis.set_major_locator(FixedLocator(x_ticks))\n",
    "\n",
    "plt.xticks(fontsize=20, fontproperties=custom_font)\n",
    "plt.yticks(fontsize=20, fontproperties=custom_font)\n",
    "\n",
    "# Set the legend\n",
    "# ax.legend()\n",
    "\n",
    "plt.savefig('burg_t_0.83_20_cornn.pdf', dpi=500)\n",
    "plt.savefig('Burg_t_0.83_20_cornn.png', dpi=500)\n",
    "# Show the plot\n",
    "plt.show()\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "318c8974",
   "metadata": {},
   "outputs": [],
   "source": []
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "pytorch",
   "language": "python",
   "name": "pytorch"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.8.10"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 5
}
